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

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

3 голосов
/ 10 декабря 2008

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

Меню 1 (с указанием групп) выглядит так

  • File = 10
    • Открытый = 11
    • Закрыть = 12
  • Редактирование = 20
    • Вырезать = 21
    • Paste = 22 * ​​1018 *
  • Помощь = 90
    • О = 91

Меню2 похоже на это

  • Edit = 20
    • Clear = 23
  • Widgets = 30
  • WIDGET2 = 32

И я делаю

  Menu1.Merge(Menu2);

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

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

1 Ответ

6 голосов
/ 10 декабря 2008

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

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

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

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

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

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

...