我如何在树视图中弹出上下文菜单,但只是在某些特定的treenodes中?

时间:2012-04-15 19:50:02

标签: delphi

我有一个与TTreeView相关联的TPopupMenu,但我现在只想在用户点击特定节点时调用(弹出)菜单。那么我如何在树视图中弹出一个上下文菜单,但只是在一些特定的treenodes中?

2 个答案:

答案 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;