delphi vcl menu

Problema de fusión del menú Delphi



vcl menu (1)

La función de fusión de menú en Delphi funciona de forma diferente a lo que cabría esperar: no es recursiva (¡por desgracia!). Eso significa que cuando llamas a Menu1.Merge , el Menú "Editar" del Menú1 es reemplazado por el Menú2.

Tienes dos opciones:

  • Agregue "Cortar" y "Pegar" manualmente a Menú2.
  • Escribe tu propia función Merge.

Tuve el mismo problema hace un tiempo (vea esta pregunta SO ):

Con lo que finalmente terminé, estoy usando el paquete Toolbar2000 para todos mis menús y barras de herramientas. A continuación, puede descargar una muy buena pieza de código, llamada TB2Merge , que hace exactamente lo que desea.

También podría basar cualquier código de combinación de menú escrito a medida en TB2Merge, supongo ...

Intento unir dos menús principales, pero tengo problemas para obtener el resultado correcto con los subtemas. Estoy usando la propiedad GroupIndex en mi MenuItems para controlar la fusión / inserción.

Menu1 (con groupindices) es como esto

  • Archivo = 10
    • Abierto = 11
    • Cerrar = 12
  • Editar = 20
    • Corte = 21
    • Pegar = 22
  • Ayuda = 90
    • Acerca de = 91

Menu2 es así

  • Editar = 20
    • Claro = 23
  • Widgets = 30
    • Widget1 = 31
    • Widget2 = 32

Y lo estoy haciendo

Menu1.Merge(Menu2);

Quiero que el menú combinado tenga un nuevo menú superior "Widgets" y un nuevo comando "Borrar" en el menú Editar. "Widgets" funciona bien, pero el menú de edición ha perdido el corte y pegado, que no era lo que yo quería.

¿Cómo puedo evitar que desaparezcan los comandos Cortar y Pegar?