Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 在DBGrid组件中管理单击事件_Delphi - Fatal编程技术网

Delphi 在DBGrid组件中管理单击事件

Delphi 在DBGrid组件中管理单击事件,delphi,Delphi,通过处理DBGrid组件上的单击事件,我遇到了一个问题。我知道这个事件并没有针对这个组件公开,所以我使用“OnCellClick”事件,以便在单击DBGrid的一行时执行一些操作 另一点是,在填充DBGrid(链接到TkbmMemTable)之后,我首先执行memTable.First以查看网格中的第一个元素。问题是我不能为第一行触发onCellClick事件。实际上,当我单击第一行时,它会触发双击事件。您可以通过派生自己的组件或使用网格在同一单元中声明(Hack)类,并通过强制转换分配事件,使

通过处理DBGrid组件上的单击事件,我遇到了一个问题。我知道这个事件并没有针对这个组件公开,所以我使用“OnCellClick”事件,以便在单击DBGrid的一行时执行一些操作


另一点是,在填充DBGrid(链接到TkbmMemTable)之后,我首先执行
memTable.First
以查看网格中的第一个元素。问题是我不能为第一行触发onCellClick事件。实际上,当我单击第一行时,它会触发双击事件。

您可以通过派生自己的组件或使用网格在同一单元中声明(Hack)类,并通过强制转换分配事件,使受保护的OnClick可见。但我不确定这是否会产生预期的结果,因为如果您在网格的现有编辑器中单击,则不会触发该事件。如果您在其他行和同一列中单击,则会保留该编辑器,因此您必须添加OnCellClick或单击到另一列中。我无法重现双击事件的触发

type
THackGrid=Class(TDBGrid);

procedure TForm5.MyEvent(Sender: TObject);
begin
   MyDataset.First;
end;

procedure TForm5.FormCreate(Sender: TObject);
begin
  THackGrid(DBGrid1).OnClick := MyEvent;
end;

您使用上面提到的OnCellClick附加处理进行了尝试,这是在InplaceEditor中捕获事件所需的吗?