ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E文精选 > 综合应用 > 细品RibbonX(43):禁用和重利用功能区中的命令

细品RibbonX(43):禁用和重利用功能区中的命令

作者:绿色风 分类: 时间:2022-08-17 浏览:171
楼主
apolloh
与以前的版本不一样,Office 2007允许全局地禁用和重利用命令。在过去,禁用命令必需禁用UI中执行该命令的控件的每一单个的实例,这显然是一项巨大的工作。
禁用命令
禁用Office 2007中的命令是非常简单的,最重要的是知道打算禁用的命令的控件名以及这些命令在哪类控件之下。从commands集合中完全禁用某命令,而不是从Ribbon对象和该对象的父容器。试图从父容器里禁用某命令将产生一条错误消息。
例如,假设希望禁用“加粗”命令,可以使用下列代码:


  1.     <commands>
  2.         <command idMso="Bold"
  3.                  enabled="false"/>
  4.     </commands>
就这么简单!关键是确保正确使用了你希望禁用的命令的idMso。
禁用与应用程序选项和退出应用程序相关的命令
虽然应用程序选项和退出应用程序控件属于officeMenu元素,然而不能从officeMenu容器里禁用这两个控件。相反,必须使用command元素,如下所示:


  1.     <commands>
  2.         <command idMso="FileExit"
  3.                  enabled="false"/>
  4.         <command idMso="ApplicationOptionsDialog"
  5.                  enabled="false"/>
  6.     </commands>
当要禁用许多控件时,一个更好的选择是共享回调,这样不需要指定每个命令的enabled属性。这种情况下,代码如下所示:


  1.     <commands>
  2.         <command idMso="FileExit"
  3.                  getEnabled="rxshared_getEnabled"/>
  4.         <command idMso="ApplicationOptionsDialog"
  5.                  getEnabled="rxshared_getEnabled"/>
  6.         <command idMso="Bold"
  7.                  getEnabled="rxshared_getEnabled"/>
  8.     </commands>
下面来处理回调,禁用控件,代码如下:


  1. Sub rxshared_getEnabled(control As IRibbonControl, ByRef returnedVal)
  2.     returnedVal = False
  3. End Sub
重利用与通用控件相关的命令
重利用命令与禁用命令所采取的方式相同,也是在commands集合中进行处理。
同样,重利用命令成功的关键在于知道希望重利用的命令所在的控件。此外,虽然某命令是不可见的,但是如果通过快捷键调用的话,仍然具有所设计的功能。这也带来了一些问题,例如事件的重复触发。
下面,我们来重利用应用程序选项按钮:


  1.         <command idMso="ApplicationOptionsDialog"
  2.                  onAction="rxApplicationOptionsDialog_repurpose"/>
回调代码如下:


  1. Sub rxApplicationOptionsDialog_repurpose(control As IRibbonControl, ByRef cancelDefault)
  2.     MsgBox "对不起,Excel选项目前已经被禁用.", vbCritical
  3. End Sub
与前面的示例一样,如果多个控件共享相同的回调签名,那么可以使用同一过程。
影响键盘快捷键和键击键
有时,可能希望覆盖掉内置快捷键和键击键。重载键击键是非常简单的,只需引用该控件,然后给它赋新的键击键,如下面的XML代码所示:


  1.     <tab idMso="TabInsert" keytip="$">
通过将“$”赋值给“插入”选项卡作为键击键,从而将其键击键从“I”修改为“$”。如下图所示,尽管使用了特殊字符$,然而仍然显示自定义的结果。

 
提示:键击键通过“键,然后键”的方式访问,即按下并释放第一个键,然后按第二个键。而快捷键则通过“键加键”的方式访问,即同时按下所有的键。
下面,我们演示重载内置快捷键,例如Ctrl+c。这里介绍使用OnKey方法来重载内置快捷键。OnKey方法用于运行指定的过程,与SendKeys方法类似,因此可以使用与之相同的键代码。但是,OnKey方法稍微有点不同,使用下表所列的参数。

名称必需/可选数据类型描述
Key必需字符串代表键或按键组合的字符串
Procedure可选Variant代表要运行的过程名称的字符串。如果值为””(空文本),当按下键或键组合时没有任何操作,这种形式的OnKey修改了键击的正常结果。如果忽略参数,那么键或键组合将恢复到正常行为(即OnKey方法清除的任何键或键组合以前被赋予的功能)

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap