Проблема слияния Delphi Menu

Я пытаюсь объединить два основных меню, но у меня возникают проблемы с получением правильных результатов с подпунктами. Я использую свойство GroupIndex в своих MenuItems для управления слиянием / вставкой.

Menu1 (с groupindices) выглядит так

  • Файл = 10
    • Открытый = 11
    • Закрыть = 12
  • Edit = 20
    • Вырезать = 21
    • Вставить = 22
  • Помощь = 90
    • О = 91

Menu2 так

  • Edit = 20
    • Ясно = 23
  • Виджеты = 30
    • WIDGET1 = 31
    • WIDGET2 = 32

И я делаю

  Menu1.Merge(Menu2);

Я хочу, чтобы в комбинированном меню появилось новое верхнее меню «Виджеты» и новая команда «Очистить» в меню «Правка». «Виджеты» работают нормально, но меню «Правка» потеряно, что я не хотел.

Как я могу остановить исчезновение команд Вырезать и Вставить?

10.12.2008 15:06:27
1 ОТВЕТ
РЕШЕНИЕ

Функция слияния меню в Delphi работает немного иначе, чем вы ожидаете: она нерекурсивна (к сожалению!). Это означает, что при вызове Menu1.Mergeменю «Правка» в Menu1 заменяется на Меню2.

У вас есть два варианта:

  • Добавьте «Вырезать» и «Вставить» вручную в Menu2.
  • Напишите свою собственную функцию слияния.

У меня была такая же проблема некоторое время назад (см. Этот ТАК вопрос ):

В конечном итоге я использовал пакет Toolbar2000 для всех своих меню и панелей инструментов. Затем вы можете загрузить очень хороший фрагмент кода под названием TB2Merge , который делает именно то, что вы хотите.

Я полагаю, вы также можете использовать любой собственный код слияния меню на TB2Merge ...

6
23.05.2017 12:25:02
Спасибо, я боялся, что это может быть ответом. Я посмотрю на Toolbar2000
Roddy 10.12.2008 21:36:11