4

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

4

2 回答 2

11

使用事件中的Handled参数OnContextPopup。通过将此参数设置为 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;
于 2012-04-15T19:56:36.113 回答
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;
于 2014-01-10T04:50:42.190 回答