您的位置:首页 > 其它

细品RibbonX(27):menu控件详解

2018-03-02 11:18 134 查看
细品RibbonX(27):menu控件详解
资料整理来自于论坛
完整版下载地址:http://download.csdn.net/download/nodeman/10264659
 Loading ...
 
菜单提供给用户可供从中选取的预定义选项列表,与dropDown控件一样,能够组合图像和文本。
表面上,菜单的用途与下拉控件的用途非常相似。然而,下拉控件的一个主要局限是仅能包含“项目”,而菜单控件可以包含各种各样的其它控件,包括按钮、复选框、库、甚至是另一个菜单。此外,下拉控件的默认显示是一个空框,而菜单可以设置一张“脸”,而不会依赖出现在其列表中的实际项目,因此菜单控件能够给人良好的印象。
1、menu元素必需的属性
菜单控件需要下表1所列的id属性之一。
表1:menu元素必需的属性
属性
何时使用
id
当创建自已的菜单时
idMso
当使用现有的Microsoft菜单时
idQ
当在命名空间之间创建共享的菜单时
2、带有回调签名的可选的静态属性和动态属性
菜单控件可以使用下表2列出的任一insert属性。
表2:menu元素可选的insert属性
INSERT属性允许值默认值何时使用
insertAfterMso
有效的Mso组
在组末尾插入
在Microsoft控件之后插入
insertBeforeMso
有效的Mso组
在组末尾插入
在Microsoft控件之前插入
insertAfterQ
有效的组idQ
在组末尾插入
在共享的命名空间控件之后插入
insertBeforeQ
有效的组idQ
在组末尾插入
在共享的命名空间控件之前插入
也可以为菜单控件设置下表3所列的任何静态属性或等价的动态属性。
表3:menu元素可选的属性和回调
静态属性动态属性允许值默认值动态属性的VBA回调签名
description
getDescription
1至1024个字符
(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至1024个字符
(none)
Sub GetImage(control As                                             
IRibbonControl,
ByRef returnedVal)
imageMso
getImage
1至1024个字符
(none)
同上
itemSize
(none)
normal,large
normal
(none)
keytip
getKeytip
1至3个字符
(none)
Sub GetKeytip(control As
IRibbonControl,
ByRef returnedVal)
label
getLabel
1至1024个字符
(none)
Sub GetLabel(control As
IRibbonControl,
ByRef returnedVal)
screentip
getScreentip
1至1024个字符
(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至1024个字符
(none)
Sub GetSupertip(control
 As IRibbonControl,
ByRef returnedVal)
tag
(none)
1至1024个字符
(none)
(none)
visible
getVisible
true,false,1,0
true
Sub GetVisible(control As
IRibbonControl,
ByRef returnedVal)
3、menu元素允许的子对象
menu元素接受下列子对象的任意组合:
n         button
n         checkbox
n         control
n         dynamicMenu
n         gallery
n         menu
n         menuSeparator
n         splitButton
n         toggleButton
4、menu元素的父对象
在下列任何控件内都能放置menu控件:
n         box
n         buttonGroup
n         dynamicMenu
n         group
n         menu
n         officeMenu
n         splitButton
5、使用内置的菜单控件
(1)创建一个新的.xlsx文件,并将其保存为Excel Built In menu Example.xlsx。
(2)关闭该文件并在CustomUI Editor中打开。
(3)输入下列XML代码:
<customUI xmlns=“http://schemas.microsoft.com/office/2006/01/customui“>
    <ribbon startFromScratch=“false“>
        <tabs>
            <tab id=“txtabDemo“
                 label=“Demo“
                 insertBeforeMso=“TabHome“>
                 <group id=“rxgrpDemo“
                        label=“Demo“>
                        <menu idMso=“FilePrepareMenu“
                             size=“large“/>
                 </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
下图为上述代码创建的组。

 
6、创建自定义菜单控件
本例中,创建一个菜单,包含一些有用的网站链接,并且将在名为“Ribbon Help”且放置在“开发工具”选项卡末尾的自定义组中包含该菜单。
(1)新建一个工作簿,以.xlsm为扩展名保存后关闭。
(2)在CustomUI Editor中打开该工作簿,并输入下列XML代码:
<customUI xmlns=“http://schemas.microsoft.com/office/2006/01/customui“>
    <ribbon startFromScratch=“false“>
        <tabs>
            <tab idMso=“TabDeveloper“>
                <group id=“rxgrpRibbonHelp“
                       label=“Ribbon Help“>
                       <menu id=“munResources“
                             imageMso=“HyperlinkInsert“
                             size=“large“
                             label=“Useful Links“>
                            <menuSeparator id=“rxmSepRibbon“
                                            title=“RibbonX Resources“/>
                            <button id=“rxbtnMSDN“
                                    label=“MSDN Ribbon DeveloperCentre“
                                    onAction=“rxsharedLinks_click“
                                    tag=“http://msdn2.microsoft.com/en-us/office/aa905530.aspx“/>
                            <button id=“rxbtnKenPuls“
                                    label=“The Ken Puls blog (ExcelMVP)“
                                    onAction=“rxsharedLinks_click“
                                    tag=“http://www.excelguru.ca/blog/2006/12/01/ribbon-example-table-of-contents“/>
                            <button id=“rxbtnRondeBruin“
                                    label=“Ron deBruin’s Site (ExcelMVP)“
                                     onAction=“rxsharedLinks_click“
                                    tag=“http://www.rondebruin.nl/ribbon.htm“/>
                            <button id=“rxbtnAccessFreak“
                                    label=“Access Freak (Access MVP)“
                                    onAction=“rxsharedLinks_click“
                                    tag=“http://www.access-freak.com“/>
                            <button id=“rxbtnPatrickSchmid“
                                    label=“Patrick Schmid’s RibbonX Forum“
                                    onAction=“rxsharedLinks_click“
                                    tag=“http://pschmid.net/office2007/forums“/>
                                    <menuSeparator id=“rxmSepAuthors“
                                          title=“Authors Sites“/>
                                    <button id=“rxbtnAuthorRobertMartin“
                                             label=“Robert Martin“
                                             onAction=“rxsharedLinks_click“
                                             tag=“http://www.msofficegurus.com“/>
                                    <button id=“rxbtnAuthorKenPuls“
                                             label=“Ken Puls“
                                             onAction=“rxsharedLinks_click“
                                             tag=“http://www.excelguru.ca/“/>
                                    <button id=“rxbtnAuthorTeresaHenning“
                                             label=“Teresa Henning“
                                             onAction=“rxsharedLinks_click“
                                             tag=“http://www.DataDyanmicsNW.com/“/>
                                    <button id=“rxbtnExcelPerfect“
                                             label=“Excel Perfect“
                                             onAction=“rxsharedLinks_click“
                                             tag=“http://www.excelperfect.com/“/>
                      </menu>
                  </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
代码创建了一个菜单,列出了九个网站。menuSeparator有效地将这些网站分成了两组。
注意,我们为每个menu控件使用了相同的回调,这使得VBA代码非常简洁。同时,我们将实际的URLs存储在tag属性中。
(3)生成回调签名,并复制代码后关闭CustomUIEditor。
(4)在Excel中打开该工作簿,打开VBE并将回调签名代码粘贴到一个标准模块中。下面编辑该回调以响应希望的操作。
‘rxbtnMSDN onAction回调
SubrxsharedLinks_click(control As IRibbonControl)
    ActiveWorkbook.FollowHyperlinkAddress:=control.Tag, NewWindow:=True
End Sub
代码在新的Web窗口中启动链接。当触发回调时,control对象被传递到过程。该对象具有三个属性:context,id,tag。回调通常查询该控件的ID并相应地作出响应,但在本例中,查询标签,因为标签中存储了URL。接着链接被提供给单击的控件,启动合适的链接。
现在,就可以测试了。切换到Excel界面,单击“开发工具”选项卡,在末尾有一个“Useful Links”的菜单,试着单击其中的菜单项。

 
下面,再看一个示例。本示例在自定义的菜单中组合一些内置控件以方便使用,其XML代码如下:
<customUI xmlns=“http://schemas.microsoft.com/office/2006/01/customui“>
    <ribbon startFromScratch=“false“>
        <tabs>
            <tab id=“rxtabDemo“
                 label=“Demo“
                 insertBeforeMso=“TabHome“>
                 <group id=“rxgrpViews“
                        label=“Document Views“>
                     <menu id=“rxmnuViewsMenu“
                           itemSize=“normal“
                           imageMso=“FilePrintPreview“
                           label=“Views“
                           size=“large“>
                          <toggleButton idMso=“ViewPageBreakPreviewView“/>
                          <toggleButton idMso=“ViewFullScreenView“/>
                          <checkBox idMso=“ViewHeadings“/>
                          <checkBox idMso=“ViewFormulaBar“/>
                          <checkBox idMso=“GridlinesExcel“/>
                    </menu>
                 </group>                       
            </tab>
        </tabs>
    </ribbon>
</customUI>
Excel中的自定义界面如下图:

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: