Как в TDBGrid узнать над каким полем висит мышь?

Материал из DRKB

Как в TDBGrid узнать над каким полем висит мышь?[править | править код]

var
  ScrPt, GrdPt: TPoint;
  Cell: TGridCoord;
begin
  ScrPt := Mouse.CursorPos;
  GrdPt := DBGrid.ScreenToClient(ScrPt);
  Cell := DBGrid.MouseCoord(GrdPt.X, GrdPt.Y);
  // Col := Cell.X;
  // Row := Cell.Y;
end;

type
  THackDBGrid = class(TDBGrid); // для доступа к private методам

var
  FieldText: string;
  DLink: TDataLink;
  OldActiveRec: Integer;
begin
  Cell := DBGrid.MouseCoord(GrdPt.X, GrdPt.Y);
  FieldText := '';
  DLink := THackDBGrid(DBGrid).DataLink;
  if Assigned(DLink) then
  begin
    if (Cell.X < = 0)or(Cell.Y < = 0) then Exit;
    OldActiveRec := DLink.ActiveRecord;
    try
      DLink.ActiveRecord := Cell.Y-1{TitleOffset};
      FieldText := DBGrid.Columns[Cell.X-1{IndicatorOffset}].Field.Text;
    finally
      DLink.ActiveRecord := OldActiveRec;
    end;
  end;
end;


Source: Взято с http://delphiworld.narod.ru
ID: 03058