在treeview中,要想实现点在不同的区域,出现不同的popupmenu(0分)

  • 主题发起人 主题发起人 caoguangchuan
  • 开始时间 开始时间
C

caoguangchuan

Unregistered / Unconfirmed
GUEST, unregistred user!
比如右击项目树上的节点,出现相应的对接点操作的popupmenu,点在有节点以外的区域,出现另一个popupmenu
 
可以查看一下TreeView的selected,等于nil就是点在接点之外了,不等于nil可以判断
接点的内容,然后弹出相应的菜单,这个步骤在TreeView的MouseDown事件处理,手工
弹出菜单
 
procedure TForm1.TreeView1MouseDown(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState;
X, Y: Integer);
var
Node: TTreeNode;
begin
if Button = mbRight then
begin
Node := [red]TreeView1.GetNodeAt(X, Y)[/red];
if Assigned(Node) then
Edit1.Text := Node.Text
else
Edit1.Text := '';
end;
end;
 
procedure TForm1.TreeView1MouseDown(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState;
X, Y: Integer);
begin
if Button = mbRight then
begin
TreeView1.GetNodeAt(X, Y);
if treeView1.selected <> nil then
pm1.popup(x,y)
else
pm2.popup(x,y)
end;
不过鼠标坐标x,y要转换成client的
 
to jameschin:x,y转换成client如何做呢?望赐教
 
用ClientToScreen
 
form1.ClientToScreen
 
对不起,我没有分值,谢谢你的帮助.
 
后退
顶部