Обратные вызовы и взаимодействие редактора RibbonX - PullRequest
0 голосов
/ 02 августа 2020

У меня (довольно базовый c) вопрос о функциях обратного вызова RibbonX.

Я закодировал некоторые макросы с помощью VBA, упакованного в модули VBA, и создал вкладку ленты, используя Office RibbonX Editor.

Я создал XML с помощью редактора, вот так ...

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
    <ribbon startFromScratch="false">
        <tabs>
            <tab id="maintab" label="My Macros">
                
                <group id="g_general" label="General">
                    <button
                        id="btn_toggle_confidential"
                        label="Toggle Confidential"
                        onAction="Toggle_Confidential_Text"
                        size="large"
                        imageMso="MailMergeUpdateLabels"
                        supertip="Toggles the visibility of the 'confidential' tag in the master and in the title layout." />
...

... для всех функций, которые мне нужны на ленте, например, например:

Sub Toggle_Confidential_Text()
    If Has_Confidential_Text() = False Then
        MsgBox "ATTENTION! There is no confidential tag in the slide master!"
        Exit Sub
    End If  
    ' etc...
End Sub

Все работает нормально и как и ожидалось!

В «средстве просмотра обратных вызовов» редактора лентыX я вижу это:

'Callback for btn_toggle_confidential onAction
Sub Toggle_Confidential_Text(control As IRibbonControl)
End Sub

Мой вопрос:

  1. Как это точно соединить кнопку с функцией в моем модуле кода? Или это просто упрощенное отображение «маршрутизации», которая выполняется под капотом?
  2. Параметр IRibbonControl передается автоматически, даже если в моем собственном объявлении подпрограммы об этом не упоминается? 1026 * Могу ли я (или как я) получить доступ к параметру IRibbonControl в моей подпрограмме для взаимодействия с элементом ленты? Нужно ли мне изменить свой подход и обернуть мои подпрограммы, или я могу просто получить доступ к параметру, потому что он неявно передан?

1 Ответ

1 голос
/ 02 августа 2020
  1. Он не должен работать, как вы говорите, он работает ... Если обратный вызов Sub не содержит control As IRibbonControl, он должен вернуть ошибку: « Неверное количество аргументов или недействительное свойство присвоение". По крайней мере, это происходило, когда я пытался создать обратный вызов Sub без параметра control As IRibbonControl.

  2. Для элемента управления кнопки параметр автоматически не передается. Если вы сделаете рекомендуемое объявление, вы можете использовать Contol.ID для имени нажатой кнопки. «Метка» на самом деле ...

  3. Можно, но не только зная метку управления. Помимо ярлыка, он также предлагает Context и Tag ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...