Visual Basic |
---|
Public Event ContextMenuBeforeShow( _ ByVal pCommands As TDMSCommands, _ ByVal pObject As TDMSObject, _ ByRef bCancel As Boolean _ ) |
- pCommands
- Коллекция команд, назначенных объекту (они будут показаны в верхней части контекстного меню).
- pObject
- Объект, чье контекстное меню будет выведено на экран.
- bCancel
- TRUE - отменить вывод контекстного меню на экран.
1. Событие является отменяемым: если параметру bCancel присвоено значение TRUE, контекстное меню не будет показано на экране (однако события ContextMenuItemAdd в этом случае все равно наступают).
2. Событие не может быть сгенерировано программно - в API TDMS нет метода, позволяющего показать контекстное меню объекта.
3. Обработчик может быть размещен в скриптах объекта, профиля и/или общесистемном (см. рисунок). Если обработчики определены на всех уровнях, то последовательность их вызова такова:
- скрипт объекта;
- скрипт профиля пользователя;
- общесистемный скрипт.
Если на каком-либо уровне событие было отменено (параметру bCancel присвоено значение TRUE), то обработчики события, размещенные на последующих уровнях, вызваны не будут.
4. Событие генерируется при вызове контекстного меню:
-
на любом объекте (в Дереве объектов или на Панели состава);
-
на узлах Desktop и Root Дерева объектов;
-
кнопкой "Команды" на панели инструментов в Окне свойств объекта.
5. Желательно не использовать в обработчике события функции вывода диалогов типа MsgBox(). При этом происходит переключение фокуса на окно диалога, и дальнейшее поведение объекта может быть некорректным (могут не выполняться некоторые команды контекстного меню и т.п.)
6. Схему последовательности генерации событий при вызове контекстного меню на объекте в Дереве объектов см. на рисунке.