dxTreelist双击节点的时候,触发什么事件????(300分)

  • 主题发起人 主题发起人 wangfu
  • 开始时间 开始时间
W

wangfu

Unregistered / Unconfirmed
GUEST, unregistred user!
我本来在dxtreelist的双击事件中运行一段代码:
例如:
procedure TForm1.dxTreeList1DblClick(Sender: TObject);
var
Node: TdxTreeListNode;
begin
Node := dxTreeList1.FocusedNode;
ShowMessage(Node.Values[0]);
end;

可是现在的问题出现了,当FocusedNode选择一个子节点的时候,
我点击前面的root(不是node)进行展开和收缩,速度很快的时候,形成双击
从而导致上面的代码调用,怎么避免??
 
procedure TForm1.dxTreeList1DblClick(Sender: TObject);
var
Node: TdxTreeListNode;
begin
Node := dxTreeList1.FocusedNode;
if node.Count=0 then //判断是否存在子结点
ShowMessage(Node.Values[0]);
end;
 
在Mouse 的OnMouseUp时
dxTreeList1.GetNodeXXXXasPos(Point) 这样就可以知道你刚刚点的节点了
 
to :maolu28
还有别的法子吗???
 
我要的是点击"+"或者“-”的时候,不响应我的双击事件
关于node.count这样就只有最底层的子节点才能双击事件,可是我所有的节点都要有双击
事件,只是+,-不要而已。
 
EASY, 加两三句话就能满足你的要求了:
var
Node: TdxTreeListNode;
pt: TPoint;
begin
GetCursorPos(pt);
pt := dxTreeList1.ScreenToClient(pt);
if dxTreeList1.GetHitInfo(pt).hitType <> htButton then
begin
Node := dxTreeList1.FocusedNode;
ShowMessage(Node.Values[0]);
end;
 
晕,我的方法基本和xianjun差不多

procedure TForm1.dxTreeList1DblClick(Sender: TObject);
var
Node: TdxTreeListNode;
ClientPoint: TPoint;
begin
Node := dxTreeList1.FocusedNode;
//为了获得坐标
ClientPoint := dxTreeList1.ScreenToClient(Mouse.CursorPos);
if Node = dxTreeList1.GetNodeAt(ClientPoint.X,ClientPoint.Y) then
ShowMessage(IntToStr(Node.Values[0]));
end;

 
这样也可以? [:D]
不过呢,我那个才是“标准”的办法,看当前鼠标双击的是什么类型的节点
是Button,Icon还是其他,如果是Button(即+、-),则不触发你的事件。
 
:)总之谢谢你才是,我就是不知道那个+,-应该用什么判断 :)
 
不好意思,题目理解错误!
下面是TreeView控件的例子:
procedure TForm1.TreeView1DblClick(Sender: TObject);
var
ClientPoint: TPoint;
begin
ClientPoint := TreeView1.ScreenToClient(Mouse.CursorPos);
if htOnItem in TreeView1.GetHitTestInfoAt(ClientPoint.X,ClientPoint.Y) then
ShowMessage('ok');
end;
希望对您有帮助!
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部