打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
细品RibbonX(43):禁用和重利用功能区中的命令
与以前的版本不一样,Office 2007允许全局地禁用和重利用命令。在过去,禁用命令必需禁用UI中执行该命令的控件的每一单个的实例,这显然是一项巨大的工作。
禁用命令
禁用Office 2007中的命令是非常简单的,最重要的是知道打算禁用的命令的控件名以及这些命令在哪类控件之下。从commands集合中完全禁用某命令,而不是从Ribbon对象和该对象的父容器。试图从父容器里禁用某命令将产生一条错误消息。
例如,假设希望禁用“加粗”命令,可以使用下列代码:
    <commands><command idMso="Bold"                 enabled="false"/></commands>

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

    <commands><command idMso="FileExit"                 enabled="false"/><command idMso="ApplicationOptionsDialog"                 enabled="false"/></commands>

当要禁用许多控件时,一个更好的选择是共享回调,这样不需要指定每个命令的enabled属性。这种情况下,代码如下所示:

    <commands><command idMso="FileExit"                 getEnabled="rxshared_getEnabled"/><command idMso="ApplicationOptionsDialog"                 getEnabled="rxshared_getEnabled"/><command idMso="Bold"                 getEnabled="rxshared_getEnabled"/></commands>

下面来处理回调,禁用控件,代码如下:

Sub rxshared_getEnabled(control As IRibbonControl, ByRef returnedVal)returnedVal = FalseEnd Sub

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

        <command idMso="ApplicationOptionsDialog"                 onAction="rxApplicationOptionsDialog_repurpose"/>

回调代码如下:

Sub rxApplicationOptionsDialog_repurpose(control As IRibbonControl, ByRef cancelDefault)MsgBox "对不起,Excel选项目前已经被禁用.", vbCriticalEnd Sub

与前面的示例一样,如果多个控件共享相同的回调签名,那么可以使用同一过程。
影响键盘快捷键和键击键
有时,可能希望覆盖掉内置快捷键和键击键。重载键击键是非常简单的,只需引用该控件,然后给它赋新的键击键,如下面的XML代码所示:

    <tab idMso="TabInsert" keytip="$">

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


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

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


OnKey方法的通用语法如下:

    Application.OnKey Key,ProcedureName

正如上表如所,参数Key指定计划捕获的键或键组合,而参数ProcedureName指定当按下键或键组合时必须执行的过程名。假设希望捕获打印快捷键(Ctrl+p),可以使用下列代码:

Sub print_override()Application.OnKey "^p", "myPrintMsg"End Sub

为了恢复快捷键的正常功能,必须忽略OnKey方法参数中的过程名,如下代码所示:

Sub print_override()Application.OnKey "^p"End Sub

该快捷键命名将恢复其默认的功能。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VS2010用IE单步调试ocx
VBA专题10-6:使用VBA操控Excel界面之执行命令以及激活功能区选项卡的两种方法
在 Access 中创建自定义功能区
Android应用程序----界面事件(按键事件)
wParam和lParam消息
键盘的使用与指法训练 - wangdusms的日志 - 网易博客
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服