电竞比分网-中国电竞赛事及体育赛事平台

分享

細(xì)品RibbonX(43):禁用和重利用功能區(qū)中的命令

 yuxinrong 2009-12-04
與以前的版本不一樣,Office 2007允許全局地禁用和重利用命令。在過去,禁用命令必需禁用UI中執(zhí)行該命令的控件的每一單個的實(shí)例,這顯然是一項(xiàng)巨大的工作。
禁用命令
禁用Office 2007中的命令是非常簡單的,最重要的是知道打算禁用的命令的控件名以及這些命令在哪類控件之下。從commands集合中完全禁用某命令,而不是從Ribbon對象和該對象的父容器。試圖從父容器里禁用某命令將產(chǎn)生一條錯誤消息。
例如,假設(shè)希望禁用“加粗”命令,可以使用下列代碼:
    <commands>
<command idMso="Bold"
                 enabled="false"/>
</commands>

就這么簡單!關(guān)鍵是確保正確使用了你希望禁用的命令的idMso。
禁用與應(yīng)用程序選項(xiàng)和退出應(yīng)用程序相關(guān)的命令
雖然應(yīng)用程序選項(xiàng)和退出應(yīng)用程序控件屬于officeMenu元素,然而不能從officeMenu容器里禁用這兩個控件。相反,必須使用command元素,如下所示:

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

當(dāng)要禁用許多控件時,一個更好的選擇是共享回調(diào),這樣不需要指定每個命令的enabled屬性。這種情況下,代碼如下所示:

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

下面來處理回調(diào),禁用控件,代碼如下:

Sub rxshared_getEnabled(control As IRibbonControl, ByRef returnedVal)
returnedVal = False
End Sub

重利用與通用控件相關(guān)的命令
重利用命令與禁用命令所采取的方式相同,也是在commands集合中進(jìn)行處理。
同樣,重利用命令成功的關(guān)鍵在于知道希望重利用的命令所在的控件。此外,雖然某命令是不可見的,但是如果通過快捷鍵調(diào)用的話,仍然具有所設(shè)計的功能。這也帶來了一些問題,例如事件的重復(fù)觸發(fā)。
下面,我們來重利用應(yīng)用程序選項(xiàng)按鈕:

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

回調(diào)代碼如下:

Sub rxApplicationOptionsDialog_repurpose(control As IRibbonControl, ByRef cancelDefault)
MsgBox "對不起,Excel選項(xiàng)目前已經(jīng)被禁用.", vbCritical
End Sub

與前面的示例一樣,如果多個控件共享相同的回調(diào)簽名,那么可以使用同一過程。
影響鍵盤快捷鍵和鍵擊鍵
有時,可能希望覆蓋掉內(nèi)置快捷鍵和鍵擊鍵。重載鍵擊鍵是非常簡單的,只需引用該控件,然后給它賦新的鍵擊鍵,如下面的XML代碼所示:

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

通過將“$”賦值給“插入”選項(xiàng)卡作為鍵擊鍵,從而將其鍵擊鍵從“I”修改為“$”。如下圖所示,盡管使用了特殊字符$,然而仍然顯示自定義的結(jié)果。
DisableRepurposeCommand1
提示:鍵擊鍵通過“鍵,然后鍵”的方式訪問,即按下并釋放第一個鍵,然后按第二個鍵。而快捷鍵則通過“鍵加鍵”的方式訪問,即同時按下所有的鍵。
下面,我們演示重載內(nèi)置快捷鍵,例如Ctrl+c。這里介紹使用OnKey方法來重載內(nèi)置快捷鍵。OnKey方法用于運(yùn)行指定的過程,與SendKeys方法類似,因此可以使用與之相同的鍵代碼。但是,OnKey方法稍微有點(diǎn)不同,使用下表所列的參數(shù)。

名稱 必需/可選 數(shù)據(jù)類型 描述
Key 必需 字符串 代表鍵或按鍵組合的字符串
Procedure 可選 Variant 代表要運(yùn)行的過程名稱的字符串。如果值為””(空文本),當(dāng)按下鍵或鍵組合時沒有任何操作,這種形式的OnKey修改了鍵擊的正常結(jié)果。如果忽略參數(shù),那么鍵或鍵組合將恢復(fù)到正常行為(即OnKey方法清除的任何鍵或鍵組合以前被賦予的功能)


OnKey方法的通用語法如下:

    Application.OnKey Key,ProcedureName

正如上表如所,參數(shù)Key指定計劃捕獲的鍵或鍵組合,而參數(shù)ProcedureName指定當(dāng)按下鍵或鍵組合時必須執(zhí)行的過程名。假設(shè)希望捕獲打印快捷鍵(Ctrl+p),可以使用下列代碼:

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

為了恢復(fù)快捷鍵的正常功能,必須忽略O(shè)nKey方法參數(shù)中的過程名,如下代碼所示:

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

該快捷鍵命名將恢復(fù)其默認(rèn)的功能。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多