Delphi菜单合并问题

标签 delphi vcl menu

我正在尝试将两个主菜单合并在一起,但在获得子项目的正确结果时遇到问题。我在 MenuItems 上使用 GroupIndex 属性来控制合并/插入。

Menu1(带有组索引)是这样的

  • 文件=10
    • 打开=11
    • 关闭=12
  • 编辑=20
    • 剪切=21
    • 粘贴=22
  • 帮助=90
    • 关于=91

菜单2是这样的

  • 编辑=20
    • 清除=23
  • 小部件=30
    • Widget1=31
    • Widget2=32

我正在做

  Menu1.Merge(Menu2);

我希望组合菜单有一个新的顶部菜单“小部件”和“编辑”菜单中的一个新的“清除”命令。 “小部件”工作正常,但编辑菜单丢失了剪切和粘贴功能,这不是我想要的。

如何阻止剪切和粘贴命令消失?

最佳答案

Delphi 中的菜单合并功能的工作方式与您期望的有点不同:它是非递归的(不幸的是!)。这意味着当您调用 Menu1.Merge 时,Menu1 的“编辑”菜单将被 Menu2 的替换

您有两个选择:

  • 手动将“剪切”和“粘贴”添加到 Menu2。
  • 编写您自己的合并函数。

我不久前遇到了同样的问题(请参阅 this SO question ):

What I eventually ended up with, is using the Toolbar2000 package for all my menus and toolbars. You can then download a very nice piece of code, called TB2Merge, which does exactly what you want.

我猜您还可以将任何自定义编写的菜单合并代码基于 TB2Merge...

关于Delphi菜单合并问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/356379/

相关文章:

css - 底部文本对齐或菜单

security - 带有分析的 Grails 菜单

c# - 如何检测 Windows 登录事件?

delphi - Windows 10 中的 MDI 窗口标题

multithreading - Delphi线程未接收消息

delphi - clx/vcl 不兼容

android - 打开带有对话框的选项菜单

delphi - 如何使 RibbonApplicationMenuBar 处于非事件/事件状态?

Delphi 5 与库不兼容

Delphi组件属性类取决于组件的Owner类