to 宁柯:
DBGrid 本身是具有双击事件的。
可以利用以下方法取得鼠标双击时所在的行和列:
=================================
目 的: 取得 TDBGrid 双击时到底点击了那行那列。
使用 DBGrid 的事件:MouseUp, DblClick。
在 DblClick 事件中,使用TCustomGrid所提供的方法 MouseCoord 取得鼠标
双击所在的行和列的索引值,从零开始。
注意:根据 DBGrid1.Options 是否包含 [dgIndicator] 而列的索引值有会所
不同:由于 Indicator 也占一列,所以包含 [dgIndicator] 的时候列的
索引值比没有包含 [dgIndicator] 的时候值大一。
先定义变量 cp: TPoint; 用来记录鼠标坐标。我是在Form1的private中定义的。
procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
cp.x := X;
cp.y := Y;
end;
procedure TForm1.DBGrid1DblClick(Sender: TObject);
var
gc: TGridCoord;
str: String;
begin
gc := DBGrid1.MouseCoord(cp.x, cp.y);
str := 'Column Number is: ' + IntToStr(gc.X) + #9'Row Number is: '
+ IntToStr(gc.Y);
ShowMessage(str);
end;
====================================
自己原来也没发现TCustomGrid居然提供了这么一个有用的方法-MouseCoord!!!
如果不是为了取得这100分,自己恐怕也不会发现这个如此有用的方法。
呵呵,既有分拿,又学到了东西,爽!