如何为 Delphi 的 TDBGrid 创建 OnCellDblClick

How to create a OnCellDblClick for Delphi's TDBGrid

我是为组件创建新事件的新手...我注意到 TDBGrid 有一个 OnCellClick,但遗憾的是它没有 OnCellDblClick 事件,这让我很困扰,如果我双击网格中的任意位置,将使用选定的行...

所以,我想创建 OnCellDblClick 事件,但正如我之前所说,我不知道该怎么做。

我注意到很多人都想要同样的活动,但我找不到答案。

是否可以知道双击是否在记录上,如果是,然后用它做所有我想做的事情?

也许您可以将 DblClick 与 DBGridMouseDown 事件一起使用
但这只有在 Options.dgRowSelect 为 false

时才有效

例如

type
  TForm1 = class(TForm)
  private
    FEmptySpace : boolean;
 ...

procedure TForm1.DBGrid1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  // in my test I only get here when clicked on empty part of the dbgrid
  FEmptySpace := TRUE;
end;

procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
  if FEmptySpace then
    showmessage('clicked in the middle of nowhere...')
  else
    showmessage(DBGrid1.Fields[DBGrid1.SelectedField.Index].AsString);

  FEmptySpace := FALSE;
end;

我没有在所有情况下都测试过这个

在我的测试中

  • Options.Editing := false
  • Options.dgRowSelect := false
  • Readonly := true