Как сделать так, чтобы кнопка переключения ленты, которая нажата при открытии документа, работала правильно при первом переключении? - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь создать кнопку переключения на ленте Word, которая может управлять настройкой форматирования дорожки документа, которая определяет, отслеживаются ли изменения форматирования, такие как полужирный и курсив, отслеженными изменениями. Этот параметр имеет пользовательский интерфейс в версии Word для Windows, но не в Mac, поэтому я пытаюсь использовать макрос для его отображения.

Проблема в том, что, хотя кнопка правильно «вниз», когда открывается новый документ (потому что форматирование дорожки включено по умолчанию), при первом нажатии на нее кнопка идет «вверх», но форматирование все еще отслеживается , После этого он переключается в противоположность состоянию кнопки (то есть выключается, когда кнопка находится в положении «вниз», включается, когда кнопка находится в состоянии «вверх»).

У меня есть длина создания кнопки в ленте XML следующим образом:

<toggleButton id="ToggleTrackFormatting" label="Track formatting" screentip="Should formatting changes be tracked when Track Changes is on?" getPressed="GetTrackFormattingButtonPressed" onAction="ToggleTrackFormattingButton"/>

Обратные вызовы такие:

'Callback for ToggleTrackFormatting onAction
Sub ToggleTrackFormattingButton(control As IRibbonControl, pressed As Boolean)
        Select Case pressed
    Case True
        TurnOffTrackFormattingOptions
    Case False
        TurnOnTrackFormattingOptions
    End Select
End Sub

'Callback for ToggleTrackFormatting getPressed
Sub GetTrackFormattingButtonPressed(control As IRibbonControl, ByRef returnedVal)
    returnedVal = ActiveDocument.TrackFormatting
End Sub

и

Sub TurnOnTrackFormattingOptions()
ActiveDocument.TrackFormatting = True
End Sub

Sub TurnOffTrackFormattingOptions()
ActiveDocument.TrackFormatting = False
End Sub

Что-то не так с обратным вызовом getPressed или что-то еще происходит?

1 Ответ

1 голос
/ 12 мая 2019

Если вы просто переключаете состояние TrackFormatting, нет необходимости проверять состояние pressed вашей кнопки переключения.

Просто измените свой обратный вызов OnAction на:

'Callback for ToggleTrackFormatting onAction
Sub ToggleTrackFormattingButton(control As IRibbonControl, pressed As Boolean)
    ActiveDocument.TrackFormatting = Not ActiveDocument.TrackFormatting
End Sub

Если вы этого еще не сделали, вам также потребуется добавить обработчик события для события DocumentChange и сделать недействительной ленту или кнопку переключения, чтобы она отображала правильное состояние нажатия для активного документа.

Для вашего обратного вызова getPressed вам также нужно учесть случай, когда ни один документ не открыт, так как ваш существующий код выдаст ошибку.

...