Visual Basic |
---|
Public Event ContextMenuItemAdd( _ ByVal cmdID As TDMSCmdEnum, _ ByVal menuObject As Variant, _ ByVal pCurrentObject As TDMSObject, _ ByRef bCancel As Boolean _ ) |
- cmdID
Идентификатор группы команд/подменю/команды меню.Значение Описание tdmCmdAddDesktop tdmCmdCanceled tdmCmdComments tdmCmdCreateMessage tdmCmdEMailMenu tdmCmdEventsObject tdmCmdFindMessage tdmCmdFindUser tdmCmdMoveQuery tdmCmdSignMenu - menuObject
- Ссылка на API-объект, в зависимости от значения cmdID:
- TDMSCommand - для команд группы tdmCmdCommand. Nothing, если группа пустая (данному типу объекта ни одной команды не назначено).
- TDMSObjectDef - для подменю tdmCmdCreate, tdmCmdAddCopy, tdmCmdAddLink, tdmCmdFind. Nothing, если подменю пустое (объект не может иметь состава).
- TDMSSignDef - для подменю tdmCmdSetSign, tdmCmdSetSignNew. Nothing, если подменю пустое (на объекте нет шаблонов подписей/ подписи не назначены типу объекта).
- Nothing - для остальных.
- pCurrentObject
- Ссылка на объект, которому принадлежит контекстное меню.
- bCancel
- TRUE - не показывать команду в меню (подменю).
2. Событие не может быть сгенерировано программно - в API TDMS нет метода, позволяющего показать контекстное меню объекта.
3. Обработчик может быть размещен в скриптах объекта, профиля и/или общесистемном (см. рисунок). Если обработчики определены на всех уровнях, то последовательность их вызова такова:
- скрипт объекта;
- скрипт профиля пользователя;
- общесистемный скрипт.
Если на каком-либо уровне событие было отменено (параметру bCancel присвоено значение TRUE), то обработчики события, размещенные на последующих уровнях, вызваны не будут.
4. Событие генерируется при вызове контекстного меню:
-
на любом объекте в Дереве объектов или на Панели состава;
-
на узлах Desktop и Root Дерева объектов;
-
кнопкой "Команды" на панели инструментов в Окне свойств объекта.
5. Желательно не использовать в обработчике события функции вывода диалогов типа MsgBox(). При этом происходит переключение фокуса на окно диалога, и дальнейшее поведение объекта может быть некорректным (могут не выполняться некоторые команды контекстного меню и т.п.)
6. Схему последовательности генерации событий при вызове контекстного меню на объекте в Дереве объектов см. на рисунке.
7. Событие генерируется даже в том случае, когда вывод самого контекстного меню на экран отменен (параметру bCancel в обработчике ContextMenu_BeforeShow() присвоено значение TRUE).