我正在尝试将两个主菜单合并在一起,但在获得子项目的正确结果时遇到问题。我在 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/