Вы можете получить текущие координаты ячейки, используя небольшой обман. :)
Потомкам компонента разрешен доступ к защищенным полям класса предка. Поскольку нам не нужно ничего делать, кроме как получить доступ к защищенному методу CellRect
из TDBGrid
, мы создадим промежуточный элемент (потомок бездействия), который просто позволяет нам получить доступ к этому защищенному методу. Затем мы можем типизировать TDBGrid
к этому новому классу-потомку и использовать его для доступа к защищенному методу. Я называю потомка, используя THack
в качестве префикса, чтобы было ясно, что единственная цель потомка - получить доступ («взломать») класс предка.
// implementation
type
THackDBGrid=class(TDBGrid);
// Where you need the coordinates
var
CurrRow: Integer;
Rect: TRect;
begin
CurrRow := THackDBGrid(DBGrid1).Row;
Rect := THackDBGrid(DBGrid1).CellRect(ColIndexYouWant, CurrRow);
// Rect now contains the screen coordinates you need, or an empty
// rectangle if there is no cell at the col and row specified.
end;
Как указала ОП в комментарии, более подробное описание того, как это работает, можно узнать по адресу delphi.about.com .