細品RibbonX 6 初識RibbonX

2021-04-27 09:39:21 字數 3924 閱讀 9418

當初次看到office 2007時,您會立即注意到介面中沒有了選單和工具欄,這是office2007最大的改變之一,使用功能區替換了選單和工具欄。您可能意識到自定義使用者介面也變得更加困難,其實設定功能區並不會像您想像的那樣困難,因為microsoft也意識到必須有一種方式供開發者或終端使用者定製功能區,所以設計了ribbonx,即功能區的可程式設計機制。

事實上,正如前面幾節所述,功能區具有很多老式介面無法比擬的優勢。下面,讓我們先簡單地認識什麼是ribbonx,以及看看如何自定義office 2007功能區。

ribbonx是什麼

在早期版本的office中,commandbars物件模型能使開發者在他們的自定義office應用程式中建立豐富的解決方案。microsoft在充分了解傳統使用者介面定製的優缺點後,在office 2007使用者介面擴充套件中引入了一種創新的模型,可以增強使用者體驗。新的使用者介面定製使用可擴充套件的標識語言(xml)和幾種傳統的程式語言之一來操縱組成使用者介面的元件。

功能區(ribbon)是office 2007應用程式介面的一部分,而ribbonx是指為自定義的應用程式來建立功能區元素(元件)的程式設計介面。通過使用ribbonx程式設計介面,定義如何在應用程式中顯示功能區。

ribbonx使用的xml是簡單易懂的,並不需要深入學習和理解xml。ribbonx也依賴至少乙個命名空間,而url定義了指定的ribbonx條目如何工作的位置。通常,您並不需要知道關於命名空間的太多資訊,只需要將其包含在ribbonx**的適當位置。

在設計自定義功能區時,使用xml定義功能區並在檔案格式中儲存為自定義部分。當開啟文件時,自動讀取xml部分並將定製應用到功能區中。無論何時關閉文件,總會自動刪除其功能區定製,因此除了自動載入的載入項外,對特定文件的功能區定製不會影響其他文件。

功能區(ribbon)的每個元素在ribbonx程式設計介面中都有相應的元素,使用者只能看到由**修改後的結果。與以前版本的office不同,ribbonx不依賴於一組層次物件來控制介面。相反,介面取決於描述不同元素的xml檔案,該檔案遵守下面的xml層次:

ribbonx的層次是相當絕對的。乙個選項卡不能包含另外的選項卡,僅能包含組。同樣,控制項能夠放置在組中,而不能直接放置在選項卡中。本系列文章將會詳細介紹如何建立良好的功能區介面,本文只是對這方面的內容作簡單介紹,讓大家能夠初步認識ribbonx。

office 2007 ui定製模型概覽

下圖為office 2007 ui定製模型示意:

ribbonx**

ribbonx**是xml**,遵守microsoft提供的xml架構。根據維基百科的解釋,「xml是描述資料的一種方式,乙個xml檔案也可以包含資料」。要定製office ribbon ui,需要使用xml描述每件事情,所有關於尺寸、位置、可見性、標籤、id等等,習慣於在**中指定這些操作的開發者應在ribbonx xml格式中指定。

ribbon應用程式

所選擇的ribbon應用程式(access、excel、outlook、powerpoint或word)將讀取ribbonx**並應用到自已的ui中。ribbonx**通過文件或者模板,或者com載入項來提供。嵌入ribbonx**到office 2007檔案格式(open xml)文件或模板中,是供使用者或vba開發者所選擇的方法。

對使用這種新模型的開發者來說,僅僅有一次機會提供ribbonx**。這意味著,乙個載入項可以裝載ribbon定製一次,通常是在啟動時。在載入項執行期間修改ribbon僅在一種有限的方式內是可能的。即在大多數靜態情況下,開發者可以指定ui。當解除安裝載入項時,或者帶有ribbonx**的文件/模板關閉時,通過ribbonx提供的ui修改也將刪除。這與以前的office版本中的commandbars模型相反,因為在commandbars模型中,開發者必須確保所有的ui定製被正確地刪除。

載入項

如果僅僅想要為某文件或模板提供乙個定製的ribbon,那麼只需使用microsoft已經提供的功能。然而,如果您想新增自已的功能,例如,正開發乙個載入項,並且要在ribbon中使用該項功能,那麼必須要在vba或com載入項中嵌入「**」。

在ribbonx**中,指定這些**。**是載入項**裡的函式,office在某些條件下呼叫這些函式。**與事件有些類似,但不相同。例如,可以指定乙個**,當想知道特定的控制項是否可見時通過office來呼叫。或者,更像事件,當使用者單擊新增到ribbon中的自定義按鈕時,與這項操作相關的**將被執行。也可以指定乙個**,使office獲取控制項的標籤。

認識ribbonx的關鍵元素

選項卡(tabs)

在功能區層次中,選項卡是最上層的元素,如下圖1所示,有乙個名為「我的選項卡」的自定義選項卡,它包含乙個名為「我的組」的組,其中包含乙個名為「我的按鈕」的按鈕。

圖1:乙個簡單的自定義選項卡

通常,建立自定義選項卡用來集中完成某項特定的任務。建立圖1所示的自定義選項卡的xml檔案如下:

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>

我的選項卡

">

我的組">

label="

我的按鈕"

size="large"

onaction="mybutton_clickhandler" />

這是乙個具有所有通用功能的標準的

xml檔案,包含處理指令、根元素(

)、子元素如

以及屬性。並且,必須為自定義介面定義命名空間,這裡,命名空間存在於

,這是為每個所建立的自定義介面元素使用的位置。

建立乙個新選項卡所需要做的只是編寫帶有

id屬性和

label

屬性的元素,使用

id屬性從應用程式訪問該選項卡,而

label

屬性則是使用者看到的選項卡的文字。

組(groups

組將相似的控制項集中在一起,使使用者不需要花太多的時間查詢正確的控制項。使用組減少了使用者的困惑,並更容易地向使用者展示如何執行一項特定的任務。例如,在

excel

中想要設定字型時,有乙個「字型」組,包含設定字型型別、大小、加粗、背景、邊框等,而不需要逐個查詢每個命令。

在上圖1

中,有乙個「我的組」,僅包含有乙個控制項。在

xml中通過使用

元素建立組,必須包括

id屬性,以便在**中標識該組,以及

label

屬性,用來提供使用者在介面中所看到的識別該組的文字。

控制項(controls

乙個控制項執行一項特定的任務。例如,可以使用按鈕控制項幫助使用者執行某任務,可以使用核取方塊讓使用者作出選擇,也可以使用下拉列表框讓使用者在多個選項中選擇而不是簡單地選擇「是

/否」。

控制項有多個大小。大尺寸的控制項吸引使用者注意,執行主要的任務,而小尺寸的控制項則幫助使用者執行不常用的任務。

控制項總是需要比其它功能區元素更多的**,因為它們不是靜態的,它們執行某項任務。在上文所示的

xml清單中,簡單的

元素需要多個引數,除了如前所述的元素一樣,必須提供

id屬性和

label

屬性。當按鈕包括影象時,影象也必須出現在引用它的檔案裡,而

size

屬性定義了按鈕的大小。絕大多數按鈕也包括

onaction

屬性,以執行與按鈕相關的**。當使用者單擊按鈕時,觸發

onaction

事件。

注:關注細品ribbonx系列,關注完美excel.

你品,你細品!

致橡樹 我如果愛你 絕不像攀援的凌霄花,借你的高枝炫耀自己 我如果愛你 絕不學痴情的鳥兒,為綠蔭重複單調的歌曲 也不止像泉源,常年送來清涼的慰藉 也不止像險峰,增加你的高度,襯托你的威儀。甚至日光,甚至春雨。不,這些都還不夠!我必須是你近旁的一株木棉,作為樹的形象和你站在一起。根,緊握在地下 葉,相...

細品SELECT COUNT語句

我們在運算元據庫時,統計數量函式count被經常使用到,今天我們就來細品select count函式 認識count 1 count expr 返回select語句檢索的行中expr的值不為null的數量。結果是乙個bigint值。2 如果查詢結果沒有命中任何記錄,則返回0。3 count 的統計結...

細品奶茶文化

乙個合格的江湖奶茶人,要熟記以下規矩 1 點奶茶千萬不要說什麼八分糖,就跟吃牛排說 我要八分熟 一樣,會顯得你不專業不高階。甜食愛好者就點全糖,普通人點半糖,達人點無糖。就是這樣。當然,全糖半糖無糖,其實並沒有本質差別。2 不要舔蓋不要舔蓋不要舔蓋。阿花和我說,再窮也不能舔蓋。奶蓋就是應該直接喝,舔...