Проблема слияния меню Delphi
Вопрос
Я пытаюсь объединить два основных меню вместе, но у меня возникают проблемы с получением правильного результата с подпунктами.Я использую свойство 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...