C++ Builder初學問與答10

10.菜單組件

77) 問:菜單是Windows常用的用戶界面。對於一個能夠實際應用的程序,菜單是必不可少的組成部分。C++Builder中是怎樣實現菜單的?
答:C++Builder爲我們提供了兩種菜單組件:一種是主菜單組件MainMenu;另一種是彈出菜單PopMenu組件。
主菜單組件的作用是在窗體上生成菜單條。菜單組件剛放到窗體上時,菜單是不可見的,當雙擊它打開菜單編輯器並且增加了菜單項後,菜單條纔出現在窗體的頂部。設計時的菜單條與運行時的菜單條完全一樣。
下面我們介紹利用菜單編輯器進行菜單設計的過程。
首先要打開菜單編輯器
從組件模板上的Standard選項卡中選擇MainMenu組件,放置到窗體上。然後,用鼠標右鍵單擊菜單組件,然後在彈出菜單中選擇Menu Designer。當然,你也可以雙擊菜單組件打開菜單編輯器。
被加亮顯示的小方框就是一個空白菜單項。
接着要添加菜單項
選中這個菜單項,這時對象編輯器中將出現這個菜單項的屬性。
我們在菜單項的Caption屬性中輸入“文件(&File)”,其中“&F”可以生成一個快捷鍵,這樣用戶就可以通過鍵盤操作了,並且F下面出現了下劃線(注意:由於是系統原因,”&”一定要在英文狀態下輸入)。當我們輸入完標題並按下回車鍵時,C++Buildr會自動給這個菜單項賦一個名字,這裏的名字是N1。如果你不滿意這個名字可以修改Name屬性。
添加完菜單項後會自動出現一個空白的子菜單項等待你輸入。
現在菜單編輯器中的輸入焦點移到了這個空白子菜單項上,同時對象編輯器將對應顯示這個子菜單項的屬性。你可以在Caption屬性中輸入子菜單項的標題“打開(&Open)”,然後按下回車鍵。菜單編輯器會打開一個新的子菜單項,並把輸入焦點移動到這個子菜單項上。這樣,就可以給菜單項增加一系列的子菜單了。
同樣方法添加退出菜單。


要開始編輯下一個菜單項,可以用鼠標單擊菜單項“文件”的右邊的虛線框,它表示一個空白的菜單項。

78) 問:當菜單項中的子菜單項屬於不同類別時,有必要用分隔條把子菜單項進行分組,菜單組件是怎樣實現這個功能的?
答:我們在退出和保存兩個菜單項中間加入選擇分隔條,在退出菜單項上點擊鼠標右鍵,從彈出菜單中選擇Insert,這時,一個空白的菜單項就插入了,將它的Caption屬性設置爲“–”這個減號符就可以了。

79) 問:那麼,我們又怎樣給菜單項設置熱鍵呢?
答:每個菜單項都有一個屬性ShortCut,利用這個屬性就可以給這個菜單項設置熱鍵了。現在我們給打開文件菜單項添加熱鍵。單擊這個菜單項,選擇屬性ShortCut,出現一個下拉菜單,其中包括一系列的熱鍵的組合。選擇Ctrl+O,這個熱鍵中就被賦給了退出菜單項。

80) 問:快捷鍵與熱鍵這兩個概念我已經弄糊塗了,您能給我解釋一下嗎?
答:好的,快捷鍵與熱鍵相同的方面是,它們都是通過鍵盤來訪問。
一個菜單項可以同時擁有快捷鍵和熱鍵。所謂快捷鍵通常只是一個字母,而熱鍵通常是一個組合鍵。另外它們的激活方式不一樣,例如一個子菜單項有一個快捷鍵O和一個熱鍵Ctrl+O,那麼使用熱鍵就可以直接激活這個子菜單項,而使用快捷鍵你必須首先選中該子菜單項上一層的菜單項,然後按下快捷鍵纔可以激活這個子菜單項。

81) 問:您講解的菜單到現在還只有菜單項和子菜單兩級,如果我希望子菜單還有自己的子菜單,應該怎麼辦?
答:這種嵌套的菜單項實際上就是級聯菜單。這裏,我們給顏色菜單項添加子菜單項,選擇顏色菜單,單擊鼠標右鍵,在彈出的快捷菜單中選擇Create Submenu命令,這時在子菜單項中將出現一個指向右的箭頭,同時還產生了一個級聯菜單。
當然,你也可以用Ctrl+方向鍵右鍵。

82) 問:很多菜單項的旁邊有複選標記,請問菜單編輯器是否提供了這個功能呢?
答:複選標記就是在菜單項的標題的前面出現的勾號。複選標記經常用於一些狀態設置的菜單項,當處於該狀態時就會出現複選標記,否則複選標記消失。
現在,我們給迴繞菜單項設置複選標記,在對象編輯器中把它的屬性Checked改爲True,這樣這個菜單項就會顯示覆選標記。要取消複選標記可以把Checked屬性再次設置爲False。

83) 問:我有時要設計一組互相排斥的菜單項,也就是單選菜單項,應該怎麼辦呢?
答:要使一組菜單項成爲單選菜單項,必須滿足幾個條件。
首先,這一組菜單必須在同一個下拉菜單中。
其次,它們的RadioItem屬性必須都設置成了True。
最後,它們的GroupIndex屬性必須相同。
這一組中唯一被選中的菜單項的前面將會顯示一個圓點標記。

84) 問:我怎樣使菜單項失效呢?
答:只要把菜單項的Enabled屬性設置爲False,就可以使菜單項失效,這時菜單項是灰色的。在設計時和運行時你可以任意設置菜單項的Enabled屬性。

85) 問:菜單項有些什麼常用的事件呢?
答:菜單項只有一種事件OnClick,在實際編輯中這個事件是一定要響應的。

86)
問:我們一般在主菜單之外還會提供一個快捷菜單,就像C++Builder一樣,在窗體中單擊右鍵隨時都可以打開一個彈出菜單。C++Builder是怎樣實現彈出菜單的?
答:彈出菜單有時候又稱爲快捷菜單。彈出菜單與主菜單的區別是:主菜單是固定的,而彈出菜單是活動的;主菜單有多組菜單項,而彈出菜單隻有一組。彈出菜單的設計方法與主菜單基本相同,也是使用菜單編輯器來完成的。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章