分享

细品RibbonX(21):toggleButton控件详解

 yuxinrong 2009-10-29

切换按钮用于在两种状态之间选择,例如当按下某切换按钮时开启或关闭某功能。

1toggleButton元素必需的属性

切换按钮需要下表1所列的id属性之一。

1toggleButton元素必需的属性

属性

何时使用

id

当创建自已的切换按钮时

idMso

当使用现有的Microsoft切换按钮时

idQ

当在命名空间之间创建共享的切换按钮时

切换按钮也需要表2所列出的onAction回调。

2toggleButton元素必需的回调

动态属性

允许值

VBA回调签名

onAction

14096个字符

Sub OnAction(control As IRibbonControl,

selectedId As String,

selectedIndex As Integer)

2、带有回调签名的可选的静态属性和动态属性

使用切换按钮时,可以使用下表3列出的任一insert属性。

3toggleButton元素可选的insert属性

INSERT属性

允许值

默认值

何时使用

insertAfterMso

有效的Mso

在组末尾插入

Microsoft控件之后插入

insertBeforeMso

有效的Mso

在组末尾插入

Microsoft控件之前插入

insertAfterQ

有效的组idQ

在组末尾插入

在共享的命名空间控件之后插入

insertBeforeQ

有效的组idQ

在组末尾插入

在共享的命名空间控件之前插入

也可以提供下表4所列的任何或所有的属性。

4toggleButton元素可选的属性和回调

静态属性

动态属性

允许值

默认值

动态属性的VBA回调签名

description

getDescription

14096个字符

none

Sub GetDescription(control

  As IRibbonControl,

ByRef returnedVal)

enabled

getEnabled

true,false,1,0

true

Sub GetEnabled(control As                                             

IRibbonControl,

ByRef returnedVal)

image

getImage

14096个字符

none

Sub GetImage(control As                                             

IRibbonControl,

ByRef returnedVal)

imageMso

getImage

14096个字符

none

同上

keytip

getKeytip

13个字符

none

Sub GetKeytip(control As                                             

IRibbonControl,

ByRef returnedVal)

label

getLabel

14096个字符

none

Sub GetLabel(control As                                              

IRibbonControl,

ByRef returnedVal)

none

getPressed

true,false,1,0

none

Sub GetPressed(control As

IRibbonControl,

ByRef returnedVal)

screentip

getScreentip

14096个字符

none

Sub GetScreentip(control As

 IRibbonControl,

ByRef returnedVal)

showImage

getShowImage

true,false,1,0

true

Sub GetShowImage(control

As IRibbonControl,

ByRef returnedVal)

showLabel

getShowLabel

true,false,1,0

true

Sub GetShowLabel(control

 As IRibbonControl,

ByRef returnedVal)

size

getSize

normal,large

normal

Sub GetSize(control As

IRibbonControl,

ByRef returnedVal)

supertip

getSupertip

14096个字符

(none)

Sub GetSupertip(control As

IRibbonControl,

ByRef returnedVal)

tag

(none)

14096个字符

(none)

(none)

visible

getVisible

true,false,1,0

true

Sub GetVisible(control As

IRibbonControl,

ByRef returnedVal)

3toggleButton元素允许的子对象

toggleButton控件不支持任何子对象。

4toggleButton元素的父对象

在下列任何控件内都能放置toggleButton控件:

n         box

n         buttonGroup

n         dynamicMenu

n         group

n         menu

n         officeMenu

n         splitButton

5、使用内置的切换按钮控件

在功能区中使用了很多内置的切换按钮控件。下面的示例在自定义选项卡中添加四个内置的切换按钮。

1)创建一个新的.xlsx文件,并将其保存为Excel Built In toggleButton Example.xlsx

2)关闭该文件并在CustomUI Editor中打开。

3)输入下列XML代码:

<customUI xmlns=http://schemas.microsoft.com/office/2006/01/customui>

    <ribbon startFromScratch=false>

        <tabs>

            <tab id=rxtabCustom

                 label=My Tools

                 insertBeforeMso=TabHome>

                <group id=rxgrpFormats

                       label=Formatting>

                    <toggleButton idMso=Bold/>

                    <toggleButton idMso=Italic/>

                    <toggleButton idMso=Underline/>

                    <toggleButton idMso=UnderlineDouble/>

                </group>

            </tab>

        </tabs>

    </ribbon>

</customUI>

4)保存并关闭CustomUI Editor。在Excel中打开工作簿,如下图所示。

 

togglebuttonsample1

6、创建自定义切换按钮控件

下面的示例再次使用在细品RibbonX(18)中使用的预付费用计划示例,我们将添加自定义视图切换功能,这样允许用户显示或隐藏“Expense To”列,如下图所示。

togglebuttonsample2

 Excel中,单击“视图—自定义视图”,选择“添加”并命名为“cvw_Show”。该视图用于返回工作表的全视图,显示所有列。关闭“视图管理器”对话框。

接着,设置隐藏“Expense To”列的第二个视图。隐藏F列,重新打开“视图管理器”对话框,添加一个名为“cvw_Hide”的新的自定义视图。关闭“视图管理器”对话框。

现在,录制切换视图的宏。单击“录制宏”按钮,开始录制:

1)单击“视图”选项卡。

2)单击“自定义视图”。

3)选择cvw_Hide视图并选择“显示”。

4)再次单击“自定义视图”。

5)选择cvw_Show视图并选择“显示”。

6)停止录制。

转到VBE中,查看录制的代码:

    ActiveWorkbook.CustomViews(”cvw_Hide”).Show

    ActiveWorkbook.CustomViews(”cvw_Show”).Show

接下来,让我们设置功能区中所自定义的切换按钮。保存Excel文件,在CustomUI Editor中打开该文件,编写下列XML代码:

<customUI xmlns=http://schemas.microsoft.com/office/2006/01/customui>

    <ribbon startFromScratch=false>

        <tabs>

            <tab id=DemoTab

                 label=Demo

                 insertBeforeMso=TabHome>

                <group id=DemoGroup

                       label=Demo Group>

                    <button id=rxbtnRollForward

                            label=Roll Forward

                            imageMso=CreateReportFromWizard

                            size=large

                            onAction=rxbtnRollForward_Click/>

                    <toggleButton id=rxtglHideExpense

                                  label=Hide Expenses

                                  imageMso=FieldList

                                  size=large

                                  onAction=rxtglHideExpense_Click/>

                </group>

            </tab>

        </tabs>

    </ribbon>

</customUI>

生成回调签名并复制,保存并关闭文件。

Excel中重新打开该文件,转到VBE中,粘贴回调签名代码。

下面,修改回调以满足需要,代码如下:

‘rxtglHideExpense onAction回调

Sub rxtglHideExpense_Click(control As IRibbonControl, pressed As Boolean)

    Select Case pressed

        Case True

            ActiveWorkbook.CustomViews(”cvw_Hide”).Show

        Case False

            ActiveWorkbook.CustomViews(”cvw_Show”).Show

    End Select

End Sub

好了!现在可以转到Excel界面中查看切换按钮的功能了。

然而,如果您隐藏了F列,保存并关闭工作簿,再打开该工作簿时,切换按钮并不会高亮选中,并且需要单击两次才能实现切换功能。此时,可以使用下列方式解决:

n         Workbook_Open过程中将cvw_Show视图设置为活动的。

n         设置getPressed回调代码测试当工作簿打开时哪个视图为活动视图,然后将其状态返回到切换按钮。

下面再举一个示例。

本示例使用一个切换按钮来切换分页显示。如下面的XML代码所示,在“视图”选项卡中自定义一个组并放置自定义的切换按钮:

togglebuttonsample3 

<customUI onLoad=rxIRibbonUI_onLoad xmlns=http://schemas.microsoft.com/office/2006/01/customui>

    <ribbon startFromScratch=false>

        <tabs>

            <tab idMso=TabView>

                <group id=rxgrpStyleInsp

                       label=Custom Options

                       insertBeforeMso=GroupZoom>

                        <toggleButton id=rxtglPageBreaks

                               label=Display PageBreaks

                               getPressed=rxtglPageBreaks_getPressed

                               getImage=rxtglPageBreaks_getImage

                               onAction=rxtglPageBreaks_click/>

               </group>

            </tab>

        </tabs>

    </ribbon>

</customUI>

生成回调签名,并将其复制。关闭CustomUI Editor

Excel中打开该工作簿,转到VBE,粘贴回调签名到标准模块中,并输写代码:

Private ribbonUI As IRibbonUI

 

‘customUI.onLoad回调

Sub rxIRibbonUI_onLoad(ribbon As IRibbonUI)

    Set ribbonUI = ribbon

End Sub

 

‘rxtglPageBreaks getPressed回调

Sub rxtglPageBreaks_getPressed(control As IRibbonControl, ByRef returnedVal)

    returnedVal = ActiveSheet.DisplayPageBreaks

End Sub

 

‘rxtglPageBreaks getImage回调

Sub rxtglPageBreaks_getImage(control As IRibbonControl, ByRef returnedVal)

    Select Case ActiveSheet.DisplayPageBreaks

        Case True

            returnedVal = “SignatureInsertMenu”

        Case False

            returnedVal = “DesignMode”

    End Select

End Sub

 

‘rxtglPageBreaks onAction回调

Sub rxtglPageBreaks_click(control As IRibbonControl, pressed As Boolean)

    ActiveSheet.DisplayPageBreaks = pressed

    ribbonUI.InvalidateControl “rxtglPicHold”

End Sub

保存该工作簿并关闭。重新打开该工作簿,此时可以测试该切换按钮的功能了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章