从Delphi中的tStringGrid中的OnSelectCell事件的单元坐标到Canvas像素位置

时间:2016-06-12 17:12:53

标签: delphi canvas tstringgrid

OnDrawCell 事件给我一个“Rect”记录,以便我知道实际像素坐标在哪里:

OnDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);

另一方面, OnSelectCell 只给我行/列坐标。

OnSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);

如何将行/ col转换为像素坐标?

我需要那些因为我需要在运行时创建一个ComboBox来覆盖整个选定的单元格,但只有在选中单元格时才需要。我知道如何做所有事情,但我不知道如何获得坐标(现在,我只是在父tStringGrid的0,0处创建组合)。

我使用的是Delphi7,但我认为这是一个普遍的问题,与Delphi版本无关。

PS:我知道有很多商业和免费软件组件在单元格中实现组合框,但我不能和/或不想使用它们。

谢谢

1 个答案:

答案 0 :(得分:4)

您可以使用CellRect method

确定单元格屏幕坐标

P.S。你有没有试过将控件集成到StringGrid中? 当您遇到控件问题(将网格作为父级)行为时,请查看this topic

相关问题