dbgrideh双击事件 ( 积分: 100 )

  • 主题发起人 主题发起人 anags
  • 开始时间 开始时间
A

anags

Unregistered / Unconfirmed
GUEST, unregistred user!
我想判断双击是表头还是表体,但无法实现。代码如下:请各位老大赐教。
procedure TfrmStockSQL.DBGridEh1DblClick(Sender: TObject);
var
//ARect: TRect;
Cell: TGridCoord ;
Button: TMouseButton;
Shift: TShiftState;
X, Y: Integer ;
begin
MouseUp(Button, Shift, X, Y);
//X:=ScreenToClient(Mouse.CursorPos).X;
// Y:=ScreenToClient(Mouse.CursorPos).Y;
cell :=TCustomDBGridEh(DBGridEh1).MouseCoord(x,y);
if (Button = mbLeft) and (Cell.Y>= 0) then
ShowMessage('表头')
else
ShowMessage('表体');
end;
 
procedure TForm1.DBGridEh1TitleClick(Column: TColumnEh);
begin
ShowMessage('TitleClick 表頭');
end;

procedure TForm1.DBGridEh1CellClick(Column: TColumnEh);
begin
ShowMessage('CellClick 表體');
end;

procedure TForm1.DBGridEh1DblClick(Sender: TObject);
begin
ShowMessage('DblClick 雙擊表體');
end;
 
我的本意是:
单击表头可排序,双击dbgrid弹出一个窗口。这样在用用户误双击了表头,会弹出
一个窗口,很烦人。
我想达到双击的如果是表头则屏蔽的效果。
各位兄弟,帮忙啊!!!!
 
在大富翁注册了很长时间,得到天南地北的朋友们的大力帮助,希望这一点心得能给大家带来帮助。
问题提出:单击表头可排序,双击dbgrid弹出一个窗口。这样在用用户误双击了表头,会弹出
一个窗口,很烦人。
解决方法:以下代码可达到双击的如果是表头则屏蔽的效果

思路:1.定位双击后的鼠标位置
2.取得了dbgrideh1中的columneh的序号
3.如果序号为负值则为表头
感谢:lj1918的富翁笔记

//首先在type处加入
THackGrid= class (TCustomDBGridEh);
procedure TfrmStockSQL.DBGridEh1DblClick(Sender: TObject);
var
Button: TMouseButton;
Cell: TGridCoord;
point: TPoint;
i: integer;
begin
point:=THackGrid(DBGridEh1).HitTest ;
cell := DBGridEh1.MouseCoord(point.X, point.Y);
i:=THackGrid(DBGridEh1).RawToDataColumn(cell.y);

if (Button = mbLeft) and (i < 0) then
showmessage('表头')
end;
 
后退
顶部