как получить объект, связанный с контекстным меню в офисной надстройке - PullRequest
0 голосов
/ 14 октября 2010

У меня есть простая надстройка COM для офиса, которую я разрабатываю (специально для доступа).

Я добавил пользовательский элемент панели команд в контекстное меню, которое появляется, когда вы щелкаете правой кнопкой мыши по объекту на панели навигации.

Это отлично работает. Добавленный код отладки запускается (в настоящее время это просто команда msgbox). Однако я не могу понять, как это сделать, - получить объект для объекта, привязанного к контекстному меню.

Я бы хотел, чтобы это произошло; Я щелкаю правой кнопкой мыши по модулю на панели навигации, выбираю мой новый пункт меню, и затем появляется окно сообщения с названием модуля, который в данный момент выделен. Как бы я пошел по этому поводу?

Вот как я сейчас работаю с событием:

Public Sub myEventHandler(ByVal ctrl As CommandBarButton, ByRef CancelDefault As Boolean) Handles contextMenu_navPaneObject.Click, contextMenu_navPaneList.Click

    MsgBox(Microsoft.VisualBasic.Information.TypeName(ctrl) & vbCrLf & _
           Microsoft.VisualBasic.Information.TypeName(ctrl.Parent) & vbCrLf & _
           Microsoft.VisualBasic.Information.TypeName(ctrl.Parent.Parent))

End Sub

contextMenu_navPaneObject и contextMenu_navPaneList являются частными объектами, объявленными с использованием «withevents» и имеющими объектный тип commandbarbutton.

Это правильный способ делать то, что я хочу, или есть альтернативный метод, который я должен использовать?

1 Ответ

0 голосов
/ 14 октября 2010

Оказывается, чтобы сделать то, что я хотел, мне нужно было запустить следующий метод:

Access.Application.CurrentObjectName ()

Это вернуло имя элемента, который я выделил в данный момент.

Надеюсь, это поможет другим!

...