2006. február 6., hétfő

How to create a hint for a single cell in a TDrawGrid or TDBGrid


Problem/Question/Abstract:

How can I make a hint for a single cell in a TDBGrid or TDrawGrid? I want to display any text in a grid cell even if it is not placed in the cell completely.

Answer:

Here's an example taken from a working app but simplified a little. OldHintRow and OldHintCol are private variables declared in TStosWin. They store the column and row for which the hint was shown previously.

procedure TStosWin.MyDrawGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
  R, C: Integer;
begin
  with MyDrawGrid1 do
  begin
    MouseToCell(X, Y, C, R);
    if (C = OldHintCol) and (R = OldHintRow) then
      exit; {Don't do anything if mouse is in the same cell}
    OldHintCol := C;
    OldHintRow := R;
    Hint := ' Your hint for column C and row R';
    {Force the hint to redisplay}
    PostMessage(Handle, WM_MBUTTONDOWN, MK_LBUTTON, Dword((Y shl 16) + X));
  end;
end;

Nincsenek megjegyzések:

Megjegyzés küldése