hehe,我这边断网了,刚才刚想推荐给你类似的算法
TempNode:=TreeView1.GetNodeAt(X,Y);
if (TempNode=nil) or (TempNode<>TreeView1.Selected) then
ShowMessage('NO')
else
ShowMessage('Yes');
但是这只能95%的解决问题,
你点击TreeView1.Selected所在行的任意一点就穿帮了:)
你的算法还有个漏洞,用text的话万一重名怎么办?
黑修,我就是在那里测的啊,没用。 If Not Assigned(Node) Then Exit;到这里就跳出了。
下面的当然没有用了。为什么? 难道我的node 都是不合法的吗?
procedure TForm2.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var ms:TPOINT;
Node:TTreeNode;
begin
node:=treeview1.GetNodeAt(X,Y);
//GetCursorPos(ms);
// Node:=TTreeView(Sender).GetNodeAt(ms.x,ms.y);
If Not Assigned(Node) Then Exit;
{下面添加你的代码}
showmessage(node.text);
end;
这样是可以的,但是当打开子树前的+时,也同样秀一个消息。
如果用 杀手的代码就是一个也秀不出来。