如何为 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
我是为组件创建新事件的新手...我注意到 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