DBGrid 的
OnDblClick event 是針對
整個 grid, 所以即使您在
title 處按 2 下滑鼠也會觸發.
可是有時候我們也在
OnTitleClick 撰寫自己的程式碼, 例如做指定欄位的排序, 若稍微按快些就會觸發
OnDblClick 而不是
OnTitleClick, 此時就得在
OnDblClick 加入判別滑鼠在按 2 下時的位置是不是在
title, 若是在
title, 就不執行
OnDblClick 中自己撰寫的程式段
----
procedure TForm1.DBGrid1DblClick(Sender: TObject);
var
pt: TGridcoord;
pMouse: TPoint;
begin
pMouse := TControl(Sender).ScreenToClient(Mouse.CursorPos);
pt := TDBGrid(Sender).MouseCoord(pMouse.X, pMouse.Y);
// pt.X 是點擊的 DBGrid 的欄
// pt.Y 是點擊的 DBGrid 的列
// 當記錄數不多, 記錄未填滿 DBGrid 時
// 點擊在 DBGrid 的空白區域, pt.X = -1, pt.Y = -1
if ((pt.Y>0) and (pt.X>0)) and (TDBGrid(Sender).DataSource.DataSet.RecordCount>0) then
begin
// 滑鼠 double click 時要做的事
...
...
end;
end;