我想确定在TDBGrid事件TitleClick(Column:TColumn)上单击的Title单元的屏幕坐标。

我可以使用ColWidths属性(通过TDBGrid = class(DBGrids.TDBGrid)类型声明公开),但是在确定列是否已由用户重新排序以及TDBGrid的水平滚动方面,我遇到了困难。我还要跟踪此列在后续移动和调整大小时的位置,并注意该列有可能可以从网格中滚动出来。

我已经在这个问题上花了很长时间,而且我对Delphi也很擅长,所以这不是一个闲聊的问题。

最佳答案

使用How do I get screen coordinates of the DBGrid cell中的技巧,我写道:

type
...
  THackedGrid = class(TDBGrid);
...
implementation
...
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var
  currRow : Integer;
  rect : TRect;
begin
  currRow := THackedGrid(DBGrid1).Row;
  rect := THackedGrid(DBGrid1).CellRect(Column.Index+1,currRow);
end;


这是你想要的吗? rect中的坐标是相对于网格的。

关于delphi - 在Delphi中,TDBGrid上单击的标题的含义是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11597536/

10-11 22:25