细品RibbonX(21):toggleButton控件详解
2009-09-30 14:17
127 查看
切换按钮用于在两种状态之间选择,例如当按下某切换按钮时开启或关闭某功能。
1、toggleButton元素必需的属性
切换按钮需要下表1所列的id属性之一。
表1:toggleButton元素必需的属性
切换按钮也需要表2所列出的onAction回调。
表2:toggleButton元素必需的回调
2、带有回调签名的可选的静态属性和动态属性
使用切换按钮时,可以使用下表3列出的任一insert属性。
表3:toggleButton元素可选的insert属性
也可以提供下表4所列的任何或所有的属性。
表4:toggleButton元素可选的属性和回调
3、toggleButton元素允许的子对象
toggleButton控件不支持任何子对象。
4、toggleButton元素的父对象
在下列任何控件内都能放置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中打开工作簿,如下图所示。
6、创建自定义切换按钮控件
下面的示例再次使用在细品RibbonX(18)中使用的预付费用计划示例,我们将添加自定义视图切换功能,这样允许用户显示或隐藏“Expense To”列,如下图所示。
在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代码所示,在“视图”选项卡中自定义一个组并放置自定义的切换按钮:
<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
保存该工作簿并关闭。重新打开该工作簿,此时可以测试该切换按钮的功能了。
细品RibbonX(19):checkBox控件详解
细品RibbonX(18):button控件详解
细品RibbonX(16):RibbonX开发基础问答
细品RibbonX(15):回调(CallBacks)
细品RibbonX(14):核心的OpenXML架构元素
细品RibbonX(13):初识XML
细品RibbonX(9):层次分明的RibbonX代码结构
细品RibbonX(8):自定义Ribbon的“武器库”
细品RibbonX(7):有效的RibbonX设计
标签:界面设计, Ribbon, 功能区
1、toggleButton元素必需的属性
切换按钮需要下表1所列的id属性之一。
表1:toggleButton元素必需的属性
属性 | 何时使用 |
id | 当创建自已的切换按钮时 |
idMso | 当使用现有的Microsoft切换按钮时 |
idQ | 当在命名空间之间创建共享的切换按钮时 |
表2:toggleButton元素必需的回调
动态属性 | 允许值 | VBA回调签名 |
onAction | 1至4096个字符 | Sub OnAction(control As IRibbonControl, selectedId As String, selectedIndex As Integer) |
使用切换按钮时,可以使用下表3列出的任一insert属性。
表3:toggleButton元素可选的insert属性
INSERT属性 | 允许值 | 默认值 | 何时使用 |
insertAfterMso | 有效的Mso组 | 在组末尾插入 | 在Microsoft控件之后插入 |
insertBeforeMso | 有效的Mso组 | 在组末尾插入 | 在Microsoft控件之前插入 |
insertAfterQ | 有效的组idQ | 在组末尾插入 | 在共享的命名空间控件之后插入 |
insertBeforeQ | 有效的组idQ | 在组末尾插入 | 在共享的命名空间控件之前插入 |
表4:toggleButton元素可选的属性和回调
静态属性 | 动态属性 | 允许值 | 默认值 | 动态属性的VBA回调签名 |
description | getDescription | 1至4096个字符 | (none) | Sub GetDescription(control As IRibbonControl, ByRef returnedVal) |
enabled | getEnabled | true,false,1,0 | true | Sub GetEnabled(control As IRibbonControl, ByRef returnedVal) |
image | getImage | 1至4096个字符 | (none) | Sub GetImage(control As IRibbonControl, ByRef returnedVal) |
imageMso | getImage | 1至4096个字符 | (none) | 同上 |
keytip | getKeytip | 1至3个字符 | (none) | Sub GetKeytip(control As IRibbonControl, ByRef returnedVal) |
label | getLabel | 1至4096个字符 | (none) | Sub GetLabel(control As IRibbonControl, ByRef returnedVal) |
(none) | getPressed | true,false,1,0 | (none) | Sub GetPressed(control As IRibbonControl, ByRef returnedVal) |
screentip | getScreentip | 1至4096个字符 | (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 | 1至4096个字符 | (none) | Sub GetSupertip(control As IRibbonControl, ByRef returnedVal) |
tag | (none) | 1至4096个字符 | (none) | (none) |
visible | getVisible | true,false,1,0 | true | Sub GetVisible(control As IRibbonControl, ByRef returnedVal) |
toggleButton控件不支持任何子对象。
4、toggleButton元素的父对象
在下列任何控件内都能放置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中打开工作簿,如下图所示。
6、创建自定义切换按钮控件
下面的示例再次使用在细品RibbonX(18)中使用的预付费用计划示例,我们将添加自定义视图切换功能,这样允许用户显示或隐藏“Expense To”列,如下图所示。
在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代码所示,在“视图”选项卡中自定义一个组并放置自定义的切换按钮:
<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
保存该工作簿并关闭。重新打开该工作簿,此时可以测试该切换按钮的功能了。
相关文章
细品RibbonX(20):editBox控件详解细品RibbonX(19):checkBox控件详解
细品RibbonX(18):button控件详解
细品RibbonX(16):RibbonX开发基础问答
细品RibbonX(15):回调(CallBacks)
细品RibbonX(14):核心的OpenXML架构元素
细品RibbonX(13):初识XML
细品RibbonX(9):层次分明的RibbonX代码结构
细品RibbonX(8):自定义Ribbon的“武器库”
细品RibbonX(7):有效的RibbonX设计
标签:界面设计, Ribbon, 功能区
相关文章推荐
- java(优化21) httpClient使用详解
- 图像处理中的数学原理详解21——PCA实例与图像编码
- [Unity-21] Prefab详解
- VB.NET 章鱼哥出品 —入门基础Button控件的使用详解(二)
- 细品RibbonX(33):separator元素详解
- 细品RibbonX(19):checkBox控件详解
- TCP-IP详解卷1-21:TCP的超时与重传(Timeout and Retransmission)
- 细品RibbonX(21):toggleButton控件详解
- 细品RibbonX(26):库(Gallery)控件详解
- 课时21 Linux系统启动详解
- Linux开发心得总结21 - Busybox下tftp命令使用详解
- jquery.toggleClass()方法详解
- 笔记21 Fragment使用详解及心得--设计哲学、静态加载
- jQuery源码分析之addClass,removeClass,toggleClass,hasClass详解四问
- Android的ToggleButton控件隐藏提示文字或清除提示文字占用空间的解决办法
- Android控件ToggleButton多状态按钮使用详解
- VB.NET 章鱼哥出品--入门基础Button控件的使用详解(一)
- 细品RibbonX(20):editBox控件详解
- 细品RibbonX(27):menu控件详解
- Android UI(ToggleButton)详解