treeview中,怎样用右键选树上的节点,应该很简单巴?(50分)

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

Apeng

Unregistered / Unconfirmed
GUEST, unregistred user!
把RightClickSelect属性设置为true,还是不能用右键选中!
 
试试用mousedown事件,通过hittest属性获得节点,再设置节点为选中.
 
是的RightClickSelect不好用。
 
Kill Night 的方法可行,
PS: kill night 名字真酷,下次我抢注!:))
 
用mousedown事件,在里面判断是否为右健。再在里面编写即可。
 
各位兄弟,看看帮助。
property RightClickSelect: Boolean;
Description
Use RightClickSelect to allow the Selected property to indicate nodes the user
clicks with the right mouse button. If RightClickSelect is True, the value of
Selected is the value of the node last clicked with either the right or left
mouse button. If RightClickSelect is False, the value of Selected is the node
last clicked using the left mouse button.
----------------------------------------------------------
RightClickSelect affects only the value of the Selected property. It does not
cause the tree view to highlight a new node if the node is selected using the
right mouse button.
说得很清楚啊。不会使它Highlight的,可以在资源管理器里面试试,先左键选中一个节
点,再右键单击另一个节点,在弹出的菜单消失之前,选中的后一个节点,一旦菜单消失
焦点又回到第一个节点了。
----------------------------------------------------------
Note: RightClickSelect must be set to True before the user right-clicks
the tree view for it to affect the value of the Selected property.

如果希望右键改变选中的节点,就用Kill Night的方法。
 
在treeview的mousedown事件中写啊。
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var ahit:thittests;
begin
ahit:=treeview1.GetHitTestInfoAt(x,y);
if (htonlabel in ahit)and(button=mbright) then
begin
//你要的操作
end;
end;
 
onmousedown事件:
var
Node: TTreeNode;
begin
if Button = mbRight then
begin
Node := TreeView1.GetNodeAt(X,Y);
if Node = nil then showmessage('exit')
else Node.Selected:=true;
end;
end;
 
用cactus123456的方法还是没有用,因为不会触发Click 事件
 
用cactus123456的方法还是没有用,因为不会触发Click 事件
而且人工调用CLick事件后,Click事件中的信息都是滞后的,
右击了下一个节点后才真正执行了Click事件。
 
var
OnMouseDown事件:
nodeTarget : TTreeNode;
begin
nodeTarget := nil;
try
nodeTarget := tvwMailDir.GetNodeAt(X,Y);
except
end;
if nodeTarget <> nil then
begin
nodeTarget.selected := True;
nodeTarget.Focused := True;
end;
 
多人接受答案了。
 
后退
顶部