<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 = False End Sub
重利用與通用控件相關的命令
重利用命令與禁用命令所采取的方式相同,也是在commands集合中進行處理。
同樣,重利用命令成功的關鍵在于知道希望重利用的命令所在的控件。此外,雖然某命令是不可見的,但是如果通過快捷鍵調用的話,仍然具有所設計的功能。這也帶來了一些問題,例如事件的重復觸發(fā)。
下面,我們來重利用應用程序選項按鈕:
<command idMso="ApplicationOptionsDialog" onAction="rxApplicationOptionsDialog_repurpose"/>
回調代碼如下:
Sub rxApplicationOptionsDialog_repurpose(control As IRibbonControl, ByRef cancelDefault) MsgBox "對不起,Excel選項目前已經被禁用.", vbCritical End Sub
與前面的示例一樣,如果多個控件共享相同的回調簽名,那么可以使用同一過程。
影響鍵盤快捷鍵和鍵擊鍵
有時,可能希望覆蓋掉內置快捷鍵和鍵擊鍵。重載鍵擊鍵是非常簡單的,只需引用該控件,然后給它賦新的鍵擊鍵,如下面的XML代碼所示:
<tab idMso="TabInsert" keytip="$">
通過將“$”賦值給“插入”選項卡作為鍵擊鍵,從而將其鍵擊鍵從“I”修改為“$”。如下圖所示,盡管使用了特殊字符$,然而仍然顯示自定義的結果。
提示:鍵擊鍵通過“鍵,然后鍵”的方式訪問,即按下并釋放第一個鍵,然后按第二個鍵。而快捷鍵則通過“鍵加鍵”的方式訪問,即同時按下所有的鍵。
下面,我們演示重載內置快捷鍵,例如Ctrl+c。這里介紹使用OnKey方法來重載內置快捷鍵。OnKey方法用于運行指定的過程,與SendKeys方法類似,因此可以使用與之相同的鍵代碼。但是,OnKey方法稍微有點不同,使用下表所列的參數(shù)。
| 名稱 | 必需/可選 | 數(shù)據(jù)類型 | 描述 |
|---|---|---|---|
| Key | 必需 | 字符串 | 代表鍵或按鍵組合的字符串 |
| Procedure | 可選 | Variant | 代表要運行的過程名稱的字符串。如果值為””(空文本),當按下鍵或鍵組合時沒有任何操作,這種形式的OnKey修改了鍵擊的正常結果。如果忽略參數(shù),那么鍵或鍵組合將恢復到正常行為(即OnKey方法清除的任何鍵或鍵組合以前被賦予的功能) |
OnKey方法的通用語法如下:
Application.OnKey Key,ProcedureName
正如上表如所,參數(shù)Key指定計劃捕獲的鍵或鍵組合,而參數(shù)ProcedureName指定當按下鍵或鍵組合時必須執(zhí)行的過程名。假設希望捕獲打印快捷鍵(Ctrl+p),可以使用下列代碼:
Sub print_override() Application.OnKey "^p", "myPrintMsg" End Sub
為了恢復快捷鍵的正常功能,必須忽略OnKey方法參數(shù)中的過程名,如下代碼所示:
Sub print_override() Application.OnKey "^p" End Sub
該快捷鍵命名將恢復其默認的功能。




