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