检测到TDbGrid的装订线(左边距)中的点击?

时间:2011-12-06 20:53:22

标签: delphi

我有一个TDBGrid的后代,允许选择多行。

我想在他们点击排水沟时打开这个模式,当他们点击网格中的任何单元格时关闭。

在OnMouseDown事件处理程序中是否有一种方法可以检测到它们在哪里点击?

1 个答案:

答案 0 :(得分:2)

OnMouseDown很难;您可以通过XY参数获取事件的坐标,并通过将TDBGrid类型转换为它的祖先TCustomGrid来转换为行和列:

var
  Coord: TGridCoord;
begin
  Coord := TCustomGrid(DBGrid1).MouseCoord(X, Y);
  if Coord.X = 0 then
    // We're in the "gutter"
end;

但是,OnMouseDown似乎仅在单击标题行时触发TDBGrid

OnCellClick似乎是一种可能的选择,但它只会触发实际的单元格(不包括装订线和标题行),所以它不起作用。 OnColEnter也不会,因为当你想要它时它不会触发。

看起来您最好的选择是使用标准的 Ctrl Shift 修饰符和鼠标左键来进行多项选择,就像Windows中的其他应用程序一样多选。