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>
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>