如何为Delphi的TDBGrid

时间:2018-01-23 21:14:15

标签: delphi tdbgrid

我在为组件创建新事件方面是新手......我注意到TDBGridOnCellClick,但遗憾的是它没有 OnCellDblClick 事件并且让我很烦恼的事实是,如果我双击网格中的任何地方,将使用所选行......

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

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

是否有可能知道双击是否在记录上,如果是,那么用它做我想要的所有东西?

1 个答案:

答案 0 :(得分:1)

也许您可以将DblClick与DBGrid的MouseDown事件一起使用 但这仅在Options.dgRowSelect为假

时才有效

例如

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