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;
2012-08-01
【Delphi】讓滑鼠在 DBGrid title 按 2 下也不引發 double click
DBGrid 的 OnDblClick event 是針對整個 grid, 所以即使您在 title 處按 2 下滑鼠也會觸發.
可是有時候我們也在 OnTitleClick 撰寫自己的程式碼, 例如做指定欄位的排序, 若稍微按快些就會觸發 OnDblClick 而不是 OnTitleClick, 此時就得在 OnDblClick 加入判別滑鼠在按 2 下時的位置是不是在 title, 若是在 title, 就不執行 OnDblClick 中自己撰寫的程式段 ----