本帖最后由 jiulongpo 于 2012-8-7 22:28 编辑
转自: http://www.excelperfect.com/index.php/2009/11/03/ribbonxstudy31/
细品RibbonX(31):buttonGroup元素详解
buttonGroup元素与box元素相似,但它也有一些独特的特征。buttonGroup控件和box控件之间在外观上最大的不同是box控件不会在组周围放置可视的边框,而buttonGroup元素实际上显示边框。buttonGroup元素不会垂直排列,并且与box不同,buttonGroup不会接受box或buttonGroup作为其子元素。 box元素和buttonGroup元素之间主要的不同归纳于下表1。 表1:box元素和buttonGroup元素之间的不同 功能
| Box
| ButtonGroup
| 水平排列控件
| √
| √
| 垂直排列控件
| √
|
| 接受嵌套的box控件
| √
|
| 接受嵌套的buttonGroup控件
| √
|
| 在控件周围放置可见的轮廓线
|
| √
|
buttonGroup是唯一允许在控件集合周边放置可见的边框的控件。 1、buttonGroup元素必需的属性 buttonGroup元素需要下表2所列的id属性之一。 表2:buttonGroup元素必需的属性 属性
| 何时使用
| id
| 当创建自已的buttonGroup时
| idQ
| 当在命名空间之间创建共享的buttonGroup时
|
2、带有回调签名的可选的静态属性和动态属性 为了相对于一个已存在的控件决定buttonGroup的位置,那么必须使用下表3列出的任一insert属性。 表3:buttonGroup元素可选的insert属性 INSERT属性
| 允许值
| 默认值
| 何时使用
| insertAfterMso
| 有效的Mso组
| 在组末尾插入
| 在Microsoft控件之后插入
| insertBeforeMso
| 有效的Mso组
| 在组末尾插入
| 在Microsoft控件之前插入
| insertAfterQ
| 有效的组idQ
| 在组末尾插入
| 在共享的命名空间控件之后插入
| insertBeforeQ
| 有效的组idQ
| 在组末尾插入
| 在共享的命名空间控件之前插入
|
也可以为buttonGroup元素设置下表4所列的可选的属性和回调。 表4:buttonGroup元素可选的属性和回调 静态属性
| 动态属性
| 允许值
| 默认值
| 动态属性的VBA回调签名
| visible
| getVisible
| true,false,1,0
| true
| Sub GetVisible(control As IRibbonControl, ByRef returnedVal)
|
当buttonGroup具有getVisible回调可用时,有一个bug。如果其值设置为false,该bug完全妨碍该回调,然而当其值设置为true时,该回调会正确地工作。 3、buttonGroup元素允许的子对象 buttonGroup元素能够包含下列任一或所有的控件: n button n control n dynamicMenu n gallery n menu n splitButton n toggleButton 4、buttonGroup元素的父对象 在下列任何控件内都能放置buttonGroup元素: n box n group 5、创建自定义的buttonGroup元素 (1)创建一个新的.xlsx文件,并将其保存为Excel buttonGroup Example.xlsx。 (2)关闭该文件并在CustomUI Editor中打开。 (3)输入下列XML代码: - <customUI
- xmlns=“http://schemas.microsoft.com/office/2006/01/customui“>
- <ribbon>
- <tabs>
- <tab id = “rxtab_Demo“
- label=“Demo“
- insertBeforeMso=“TabHome“>
- <group id=“rxgrp_Demo“
- label=“Demo Group“>
- <box id=“rxboxCustom“
- boxStyle=“vertical“> <buttonGroup id=“rxbgrpMsoControls“>
- <toggleButton idMso=“Bold“/>
- <toggleButton idMso=“Italic“/>
- <toggleButton idMso=“Underline“/>
- <toggleButton idMso=“UnderlineDouble“
- showLabel=“false“/>
- </buttonGroup>
- </box>
- <button id=“rxbtnHappy1“
- imageMso=“HappyFace“
- label=“Button 1“/>
- <button id=“rxbtnHappy2“
- imageMso=“HappyFace“
- label=“Button 2“/>
- <button id=“rxbtnHappy3“
- imageMso=“HappyFace“
- label=“Button 3“/>
- </group>
- </tab>
- </tabs>
- </ribbon>
- </customUI>
复制代码
注意,buttonGroup控件被封装在垂直的box控件里。正如在介绍box控件中所提到的,使用box控件能够迫使所有的按钮控件到下一列,从而使您的控件下保留空白。 (4)保存后关闭CustomUI Editor。 (5)在Excel中重新打开该文件,下图即为上述XML代码创建的组。 注意到这些在水平按钮组中的字体控件,成一条线地显示在垂直的box控件顶部。垂直控件为其内容保留了完整的区间,因此三个笑脸按钮显示在其右侧的一列。 |