Joar,
TDBGrid.OnCellClick wäre bestimmt eine passende Alternative.
Per se gibt es OnClick, aber es wurde wohl einfach nur vergessen sichtbar zu machen. (ist halt nur noch protected und sollte auch funktionieren, denn im TDrawGrid gibt's das erwartungsgemäß)
Liese sich per Code einfach zuweisen
Delphi-Quellcode:
type
TDBGrid =
class(
Vcl.DBGrids.TDBGrid)
published
property OnClick;
end;
TForm2 =
class(TForm)
DBGrid1: TDBGrid;
procedure FormCreate(Sender: TObject);
private
procedure DBGrid1Click(Sender: TObject);
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.DBGrid1Click(Sender: TObject);
begin
ShowMessage('
blub');
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
DBGrid1.OnClick := DBGrid1Click;
end;
oder die "böse" Variante
Delphi-Quellcode:
type
TForm2 = class(TForm)
DBGrid1: TDBGrid;
procedure FormCreate(Sender: TObject);
private
procedure DBGrid1Click(Sender: TObject);
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.DBGrid1Click(Sender: TObject);
begin
ShowMessage('blub');
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
TDrawGrid(DBGrid1).OnClick := DBGrid1Click;
end;
oder man macht es sich selbst
Delphi-Quellcode:
type
TDBGrid =
class(
Vcl.DBGrids.TDBGrid)
protected
procedure WMLButtonUp(
var Message: TWMLButtonUp);
message WM_LBUTTONUP;
end;
TForm2 =
class(TForm)
DBGrid1: TDBGrid;
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TDBGrid.WMLButtonUp(
var Message: TWMLButtonUp);
begin
inherited;
if ClientRect.
Contains(SmallPointToPoint(
Message.Pos))
then
ShowMessage('
blub');
end;
eigentlich genauer so, aber geht auch ohne (siehe drüber)
Delphi-Quellcode:
procedure TDBGrid.WMLButtonUp(var Message: TWMLButtonUp);
var
Clicked: Boolean;
begin
Clicked := csClicked in ControlState;
inherited;
if Clicked and ClientRect.Contains(SmallPointToPoint(Message.Pos)) then
ShowMessage('blub');
end;
Ein Therapeut entspricht 1024 Gigapeut.