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

From cell coordinates to Canvas pixel position on OnSelectCell event in tStringGrid in Delphi

OnDrawCell事件给我一个"Rect"记录,这样我就知道真正的像素坐标在哪里:

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

另一方面,OnSelectCell 只给我 row/col 坐标。

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

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

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

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

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

谢谢

您可以使用 CellRect method

确定单元格屏幕坐标

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