我有一个与TTreeView相关联的TPopupMenu,但我现在只想在用户点击特定节点时调用(弹出)菜单。那么我如何在树视图中弹出一个上下文菜单,但只是在一些特定的treenodes中?
答案 0 :(得分:10)
使用OnContextPopup
事件中的Handled
参数。通过将此参数设置为True,您将禁止显示上下文菜单。以下代码显示了如何从光标位置获取TTreeNode
传递到OnContextPopup
事件,并且仅当您右键单击与顶部不同的TTreeNode
时,它才会显示弹出菜单。
procedure TForm1.TreeView1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
if TreeView1.GetNodeAt(MousePos.X, MousePos.Y) = TreeView1.TopItem then
Handled := True;
end;
答案 1 :(得分:1)
这可能会有所帮助:
procedure TForm1.TreeView1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
var node : TTreeNode;
begin
node := TreeView1.GetNodeAt(MousePos.X, MousePos.Y);
if not Assigned (node) then
Abort;
end;