3

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

Menu1(带有 groupindices)是这样的

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

Menu2是这样的

  • 编辑=20
    • 清除=23
  • 小部件=30
    • 小部件1=31
    • 小部件2=32

我在做

  Menu1.Merge(Menu2);

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

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

4

1 回答 1

6

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

你有两个选择:

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

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

我最终得到的结果是,我的所有菜单和工具栏都使用了 Toolbar2000 包。然后,您可以下载一段非常棒的代码,称为 TB2Merge,它完全符合您的要求。

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

于 2008-12-10T17:25:12.027 回答