Динамическое формирование локального меню стандартных интерф
Добавлено: 21 июл 2009, 17:05
Задача: в интерфейсе редактирования заказа НИОКР добавить пункт в локальное меню и написать его обработчик. Мои попытки увенчались провалом, "и чем я его только ни пробовала"(c).
1. Пробовал добавить через сапорт/консоль управления/меню. Пункт добавился и даже вызывался его обработчик. Только у меня возникло подозрение, что меню при этом переписывается полностью в ресурс пользователя, что не есть гуд: если в следующем патче будет добавлен новый пункт меню, то мое меню его перекроет; это недопустимо. Видимо добавить пункт в сапорте - это тоже самое, что подключить ресурсник в котором описана конструкция вида:
2. Пробовал докомпилить интерфейс (alter interface) и в handleevent cmInit (а потом еще и в cmHotKeys) описывал следующую конструкцию:
Ясное дело, не получилось, т.к. я создал свой экземпляр меню, который никак не соотносится с тем меню, которое вызывает стандартный обработчик
3. Пробовал найти точку расширения на формирование меню в cmHotkey, думал, может реализовано так же, как для накладных через RunDynMenu - безуспешно.
Идей больше нет, прошу Вашей помощи. Заранее спасибо.
1. Пробовал добавить через сапорт/консоль управления/меню. Пункт добавился и даже вызывался его обработчик. Только у меня возникло подозрение, что меню при этом переписывается полностью в ресурс пользователя, что не есть гуд: если в следующем патче будет добавлен новый пункт меню, то мое меню его перекроет; это недопустимо. Видимо добавить пункт в сапорте - это тоже самое, что подключить ресурсник в котором описана конструкция вида:
Код: Выделить всё
НазваниеСтандартногоМеню Menu {
- Пункт стандартного меню 1
- Пункт стандартного меню 2
...
- Добавляемый пункт меню
}
Код: Выделить всё
var MenuId: longint;
MenuId := LoadMenu('HOTSTAGEWIN');
AddMenuItem(MenuId, 'Новый пункт меню', cmAddedMenuItem1);
inherited::handleevent(cmInit);
3. Пробовал найти точку расширения на формирование меню в cmHotkey, думал, может реализовано так же, как для накладных через RunDynMenu - безуспешно.
Идей больше нет, прошу Вашей помощи. Заранее спасибо.