如何使打开文档时按下的功能区切换按钮在首次切换时正常运行?

How do I make a ribbon toggle button which is pressed on document open behave properly when it is first toggled?

我正在尝试在 Word 的功能区中创建一个切换按钮,该按钮可以控制文档的轨道格式设置,该设置确定是否使用跟踪更改来跟踪粗体和斜体等格式更改。此设置在 Windows 版本的 Word 中有一个 UI,但在 Mac 中没有,所以我正在尝试使用宏来公开它。

问题在于,虽然按钮在打开新文档时正确地 'down'(因为轨道格式默认处于打开状态),但我第一次按下它时,按钮变为 'up' 但格式仍然被跟踪。此后,它切换到与按钮状态相反的状态(即当按钮为 'down' 时关闭,当按钮为 'up' 时打开)。

我已经得到了在功能区中创建按钮的长度 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 回调中做错了什么,还是发生了其他事情?

如果您只是简单地切换 TrackFormatting 的状态,则无需检查切换按钮的 pressed 状态。

只需将您的 OnAction 回调更改为:

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

如果您还没有这样做,您还需要为 DocumentChange 事件添加一个事件处理程序并使功能区或切换按钮无效,以便它显示正确的活动按下状态文件.

对于您的 getPressed 回调,您还需要处理没有文档打开的情况,因为您现有的代码会产生错误。