Справочное руководство по TDMS 7.0 API
ContextMenuItemAdd Событие
Смотри также  Пример  Отправить замечание
cmdID
Идентификатор группы команд/подменю/команды меню.
pCurrentObject
Ссылка на объект, которому принадлежит контекстное меню.
bCancel
TRUE - не показывать команду в меню (подменю).
TDMSApplication Объект : ContextMenuItemAdd Событие

Glossary Item Box

Описание

Генерируется перед добавлением каждой команды в контекстное меню.

Опеделение

Visual Basic
Public Event ContextMenuItemAdd( _
   ByVal cmdID As TDMSCmdEnum, _
   ByVal menuObject As Variant, _
   ByVal pCurrentObject As TDMSObject, _
   ByRef bCancel As Boolean _
)

Параметры

cmdID
ЗначениеОписание
tdmCmdAddCopy 
tdmCmdAddDesktop 
tdmCmdAddLink 
tdmCmdAddQuery 
tdmCmdCanceled 
tdmCmdCommand 
tdmCmdComments 
tdmCmdCopy 
tdmCmdCreate 
tdmCmdCreateMessage 
tdmCmdCreateMsgAttach 
tdmCmdCreateQuery 
tdmCmdCreateVersion 
tdmCmdDuplicate 
tdmCmdEMailMenu 
tdmCmdEventsObject 
tdmCmdFindMessage 
tdmCmdFindUser 
tdmCmdLocateTree 
tdmCmdMoveDown 
tdmCmdMoveQuery 
tdmCmdMoveUp 
tdmCmdObjectMove 
tdmCmdPaste 
tdmCmdPermissions 
tdmCmdProperties 
tdmCmdQueryExtended 
tdmCmdRemove 
tdmCmdSendDesktop 
tdmCmdSetSign 
tdmCmdSetSignNew 
tdmCmdSignMenu 
tdmCmdUpdate 
Идентификатор группы команд/подменю/команды меню.
menuObject
Ссылка на API-объект, в зависимости от значения cmdID:
  • TDMSCommand - для команд группы tdmCmdCommand. Nothing, если группа пустая (данному типу объекта ни одной команды не назначено).
  • TDMSObjectDef - для подменю tdmCmdCreate, tdmCmdAddCopy, tdmCmdAddLink, tdmCmdFind. Nothing, если подменю пустое (объект не может иметь состава).
  • TDMSSignDef - для подменю tdmCmdSetSign, tdmCmdSetSignNew. Nothing, если подменю пустое (на объекте нет шаблонов подписей/ подписи не назначены типу объекта).
  • Nothing - для остальных.
pCurrentObject
Ссылка на объект, которому принадлежит контекстное меню.
bCancel
TRUE - не показывать команду в меню (подменю).

Заметки

1. Событие является отменяемым: если параметру bCancel присвоено значение TRUE, команда не будет добавлена в меню. Событие наступает даже в том случае, если событие ContextMenuBeforeShow было отменено.

2. Событие не может быть сгенерировано программно - в API TDMS нет метода, позволяющего показать контекстное меню объекта.

3. Обработчик может быть размещен в скриптах объекта, профиля и/или общесистемном. Если обработчики определены на всех уровнях, то последовательность их вызова такова:

  • скрипт объекта;
  • скрипт профиля пользователя;
  • общесистемный скрипт.

Если на каком-либо уровне событие было отменено (параметру bCancel присвоено значение TRUE), то обработчики события, размещенные на последующих уровнях, вызваны не будут.

4. Событие генерируется при вызове контекстного меню:

  • на любом объекте в Дереве объектов или на Панели состава;
  • на узлах Desktop и Root Дерева объектов;
  • кнопкой "Команды" на панели инструментов в Окне свойств объекта.

5. Желательно не использовать в обработчике события функции вывода диалогов типа MsgBox(). При этом происходит переключение фокуса на окно диалога, и дальнейшее поведение объекта может быть некорректным (могут не выполняться некоторые команды контекстного меню и т.п.)

6. Схему последовательности генерации событий при вызове контекстного меню на объекте в Дереве объектов см. на рисунке:

7. Событие генерируется даже в том случае, когда вывод самого контекстного меню на экран отменен (параметру bCancel в обработчике ContextMenu_BeforeShow() присвоено значение TRUE).

Пример

VB Script (Visual Basic)Скопировать код
'==================================================== 
'Текст обработчика может быть размещен в скрипте формы, профиля или
'общесистемном скрипте.

Sub ContextMenu_ItemAdd(cmdId, MenuObject, Obj, bCancel)
        'Если есть API-объект, с которым связана команда меню - показать его описание,
        'иначе отменить добавление элемента в меню
        If Not (MenuObject Is Nothing) Then 
                MsgBox TypeName(MenuObject) & ": " & MenuObject.Description
        Else 
                bCancel = True
        End If
End Sub
'====================================================

Смотри также

© 2023 CSoft Development. Все права защищены.