Delphi菜单合并问题

时间:2008-12-10 15:06:27

标签: delphi vcl menu

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

Menu1(带有groupindices)就像这样

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

Menu2就像这样

  • 编辑= 20
    • 清除= 23
  • 窗口小部件= 30
    • WIDGET1 = 31
    • WIDGET2 = 32

我正在做

  Menu1.Merge(Menu2);

我希望组合菜单在Edit菜单中有一个新的顶级菜单“Widgets”和一个新的“Clear”命令。 “Widgets”工作正常,但编辑菜单丢失了剪切和粘贴,这不是我想要的。

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

1 个答案:

答案 0 :(得分:6)

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

您有两种选择:

  • 手动添加“剪切”和“粘贴”到Menu2。
  • 编写自己的合并功能。

前一段时间我遇到了同样的问题(见this SO question):

  

我最终得到的是,   使用   Toolbar2000   我的所有菜单和工具栏的包。   然后你可以下载一个非常好的   一段代码,叫做   TB2Merge,   这正是你想要的。

你也可以在TB2Merge上建立任何自定义编写的菜单合并代码,我猜......