Вопрос

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

Menu1 (с groupindices) выглядит следующим образом

  • Файл=10
    • Открыто =11
    • Закрыть =12
  • Редактировать=20
    • Сокращение =21
    • Паста=22
  • Справка=90
    • Примерно =91

Menu2 выглядит следующим образом

  • Редактировать=20
    • Очистить=23
  • Виджеты=30
    • Widget1=31
    • Widget2=32

И я делаю

  Menu1.Merge(Menu2);

Я хочу, чтобы в объединенном меню было новое верхнее меню "Виджеты" и новая команда "Очистить" в меню Редактирования."Виджеты" работают нормально, но в меню редактирования исчезли функции вырезания и вставки, что было не тем, чего я хотел.

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

Это было полезно?

Решение

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

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

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

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

Что я в конечном итоге получил, так это использование Панель инструментов 2000 пакет для всех моих меню и панелей инструментов.Затем вы можете загрузить очень приятный фрагмент кода, называемый TB2Мердж, который делает именно то, что вы хотите.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top