VirtualStringTree OnNodeRightClick

Ben*_*iss 2 delphi delphi-7 virtualtreeview tvirtualstringtree

我正在寻找一个程序或一些东西,如果我右键单击一个节点(或通常在VirtualStringTree上)被解雇

我有以下场景:

  • 我的VST接近列表视图.
  • 我只能使用鼠标多选择根节点(按住鼠标按钮并移动鼠标)
  • 如果我点击任何子节点(右或左) - 它被选中(+ [VSelected]状态)
  • 如果我右键单击根节点,它会自动选择并打开弹出菜单.

现在我希望为我的所有子节点(仅当它们被选中)有一个不同的弹出菜单(1个常用).

希望你能理解我的意思,谢谢你的帮助.

TLa*_*ama 6

我不会回答你的问题,但指出你正确的事件,因为你说你想为每个节点提供不同的弹出菜单.右键单击解决方案至少在缺少菜单键按下时会有一个弱点,它也会调用弹出菜单.

1.1如何根据节点级别为每个节点使用不同的弹出菜单?

procedure TForm1.VirtualTreeGetPopupMenu(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; const P: TPoint;
  var AskParent: Boolean; var PopupMenu: TPopupMenu);
begin
  case VirtualTree.GetNodeLevel(Node) of
    0: PopupMenu := PopupMenu1;
    1: PopupMenu := PopupMenu2;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

1.2如何启用鼠标右键单击节点选择?

要允许鼠标右键选择节点,只需将toRightClickSelect选项添加到TreeOptions.SelectionOptions选项集即可.