delphi TreeView 鼠标右击选择节点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi TreeView 鼠标右击选择节点相关的知识,希望对你有一定的参考价值。
TreeView树形目录!当鼠标右击某个节点时,弹出一个PopMenu的下来菜单!这是如何让被右击的节点同时被高亮选择呢!比如我选择的是A节点!A节点高亮显示!这时突然在B节点处鼠标右击!可是A仍然高亮显示被选择!只是B节点右侧弹出了PopMenu!我想让鼠标右击的同时B节点既被高亮选择又弹出PopMenu
尝试在Treeview中用右键弹出PopupMenu的同时,也实现左键焦点效果,用了treeview的自带属性RightClickSelect为true一点效果都没有,后来
响应OnMouseDown事件
if Button=mbRight then TreeView1.Selected :=TreeView1.GetNodeAt(X,Y);依然不能完美解决(要点2次右键);
最后
在PopupMenu的OnPopup消息里强制发送左键消息才完美解决。
procedure TFrmMain.PopupMenu1Popup(Sender: TObject);
var
pt: TPoint;
l_lPARAM :LPARAM;
begin
//if Sender = PopupMenu1 then showmessage('抓到Sender');
GetCursorPos(pt); 这是获取的相对于屏幕的坐标
pt := ScreenToClient(pt); 转换成本地坐标
//ShowMessageFmt('API 函数 GetCursorPos: x=%d; y=%d', [pt.X, pt.Y]);
l_Lparam := pt.x + (pt.y shl 16);//l_lPARAM :LPARAM;
Sendmessage(TreeView1.Handle,WM_LBUTTONDOWN ,MK_LBUTTON,L_lparam);
Sendmessage(TreeView1.Handle,WM_LBUTTONUP ,MK_LBUTTON,L_lparam);
end;
这个才是完美解决办法。 参考技术A 在 TREEVIEW的两个鼠标事件里写:
procedure TForm1.TreeView1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
PopupMenu1.Popup(X,Y);
end;
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbRight then
TTreeView(Sender).GetNodeAt(X,Y).Selected := True;
end;
OK,祝你好运!本回答被提问者采纳
C#动态给treeview控件添加节点和子节点
在程序运行的时候,点击一个按钮添加,主要是子节点怎么添加
如图,添加根节点可以添加,可是子节点去不知道怎么添加
我在添加子节点的时候,用鼠标单击了一个节点,我怎样才能知道是那个节点呢?怎么让程序知道该在那个里添加呢?
treeview 鼠标点击一个节点,那么这个节点是处于选中状态的,它会有明显的蓝色背景,而且只有一个处于选中状态
treeview.SelectNode 就是选中的节点
此为方法一
方法二:设置treeview 有一个属性,是否显示复选框,好像叫做ShowCheckBox 设置为true,你每次勾选节点前面的复选框,然后怎么判断是否选中呢?
循环所有根节点 foreach node in root.childnode
if(node.Checked)
//这个node就是你需要在下面添加子节点的节点
分清楚selected 和checked 就可以帮你解决你疑惑的地方 参考技术A TreeNode RootNode=new TreeNode();
this.treeView1.Nodes.Add(RootNode);
就这样加根节点,子节点也是同样方法。
语句: ParentNode.ChildNodes.Add(ChildNode);
其中:
ParentNode:父结点
ChildNodes:VS默认的父节点属性,用于获取父结点的第一级子节点
Add: VS默认的结点添加方法
ChildNode: 所要插入的子节点追问
我在添加子节点的时候,用鼠标单击了一个节点,我怎样才能知道是那个节点呢?
追答其他网友已经给了你答案,我想你应该明白了O(∩_∩)O~
本回答被提问者采纳 参考技术B 用递归去实现就可以了 参考技术C 应该是控件new一个add添加以上是关于delphi TreeView 鼠标右击选择节点的主要内容,如果未能解决你的问题,请参考以下文章