我想确定在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/