Announcement

Collapse
No announcement yet.

Bei DBGrid Feldinhalt als Hint anzeigen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bei DBGrid Feldinhalt als Hint anzeigen

    Im Hint des DBGrids soll der Wert des Feldes "KurzName" von dem Datensatz angezeigt werden, über dem sich der Mauszeiger befindet(nicht des aktuellen Datensatzes).
    Mein Problem ist, dass ich nur auf den aktuellen Datensatz zugreifen kann, jedoch nicht auf den Inhalt der durch MouseCoord(x,y) bestimmten Zelle.
    Weis jemand wie ich mit Hilfe von OnMouseMove, den Datensatz bestimmen kann, über dem sich der Mauszeiger befindet, auch wenn dies nicht der aktuelle Datensatz ist?

    <PRE> <CODE>
    unit HintDBGrid;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    Db, DBTables, Grids, DBGrids;

    type
    TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    Table1: TTable;
    DataSource1: TDataSource;
    procedure DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
    Y: Integer);
    private
    { Private-Deklarationen }
    public
    { Public-Deklarationen }
    end;

    var
    Form1: TForm1;
    xwert, ywert: Integer;

    implementation

    {$R *.DFM}

    procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
    Y: Integer);
    var
    coord: TGridCoord;
    begin
    coord := (Sender as TDBGrid).MouseCoord(x,y);
    if (Sender as TDBGrid).ShowHint then begin
    if not((xwert=coord.x) and (ywert=coord.y)) then
    (Sender as TDBGrid).ShowHint := false
    end
    else begin
    if not (coord.y=0) then begin
    (Sender as TDBGrid).Hint := (Sender as TDBGrid).DataSource.DataSet.FieldByName('KurzName' ).Value;
    (Sender as TDBGrid).ShowHint := true;
    end;
    end;
    xwert := coord.x;
    ywert := coord.y;
    end;

    end.
    </CODE> </PRE>
Working...
X