C++ Builder初學問與答11

11.工具條組件
87)
問:工具條是Windows編程經常要用的, C++Builder能不能實現這個功能呢?
答:當然可以,工具條是由許多具有圖形的按鈕組成的,這些按鈕被分隔符分隔成許多組,每個組都能夠完成特定的工作。工具條上的按鈕具有與位圖按鈕相似的特性——可以擁有多個位圖,當按鈕處於不同狀態時,例如按下、失效等,將顯示不同的位圖。以前C++Builder製作工具條的方法是通過把加速按鈕放在面板組件Panel上實現的。現在,我們不必使用這兩種組件的組合,只要使用ToolBar就可以創建工具條了。工具條是比較難掌握的,它之所以不容易掌握是因爲它包含的TToolButton組件有三個屬性:Grouped,AllowAllUp和Down,它們的組合可以產生各種不同效果的按鈕組。這三個屬性我們一定要好好理解。

88) 問:那請給我介紹一下Toolbar這個組件的使用方法好嗎?
答:好的,我們先從ToolBar的屬性入手,通過對一些重要屬性的分析來了解它。ToolBar包含一些前面沒有見過的屬性:
ButtonHeight 屬性指出了工具條中按鈕的高度。
ButtonWidth 屬性用來設定工具條中按鈕的寬度。
Flat 屬性爲true時,使工具條透明,同時使工具條上按鈕之間的邊界消失。俗稱平面工具條,它的缺省值爲False。
Indent 用來在工具條的左邊創建一個邊沿區。
ShowCaptins 確定是否允許在工具條的按鈕上顯示標題。缺省值爲False。
Wrapable 設定是否允許工具條上的按鈕換行。缺省值爲True。
List 屬性,當這個屬性爲True時,工具條上按鈕的圖標在左,標題在右。爲False時,按鈕的圖標在上,標題在下。缺省值爲False。
Images 用來設定正常情況下,按鈕上顯示的圖標列表。
HotImages 用來設定當鼠標移動到按鈕上顯示的圖標列表。
DisabledImages 用來設定按鈕失效時顯示的圖標列表。

工具條上所有按鈕顯示的圖標就包含在這三個圖標列表中。

在前面介紹的ListView組件中,屬性LargeImages和SmallImages分別表示在兩種不同的狀態下顯示的圖標列表。ToolBar的這三種屬性也有類似的特點,它們分別表示在正常狀態、鼠標指向工具條以及按鈕失效時顯示的圖標列表。
此外,還有幾個運行時態屬性:
ButtonCount屬性,指出了工具條中按鈕的個數。
Buttons存放着工具條中按鈕的列表。
RowCount指示着工具條的行數。

89) 問:C++Builder爲什麼要採用圖標列表的方式來管理工具條上的圖標呢?
答:因爲這樣可以集中統一地管理大量的圖標,從而大大地減輕了程序員的負擔。
答:要爲應用程序建立工具條,可以按照下面的步驟:
(1)從選項卡Win32中選擇工具條組件,放置在窗體上。
注意,剛放置在窗體上的工具條組件一定是在窗體的頂部,因爲這時工具條的Align屬性被設置爲alTop。
(2)在窗體上增加兩個ImageList組件,併爲這些組件引入圖標。
(3)將一個ImageList組件賦予工具條的屬性Images,另一個賦予工具條的屬性DisabledImages。
(4)用鼠標右鍵單擊工具條,在彈出菜單中選擇New Button。
這時將在工具條上出現一個按鈕,這個按鈕無標題。這是因爲工具條的ShowCaption屬性被設置成了False。實際上這個按鈕有一個缺省的標題ToolButton1。
這個新創建的按鈕與我們前面介紹的按鈕都不一樣,它是一個TTtoolButton組件。
(5)選中工具條上的按鈕,把按鈕的ImageIndex屬性改爲所需要圖標的索引號。這個圖標實際上是存放在ImageList組件中的。
(6)重複第四步和第五步,在工具條上創建更多的按鈕。這樣一個工具條就建立了。

90) 問:工具條上的按鈕好像與普通按鈕不一樣,請問它有些什麼特點呢?
答:工具條上的按鈕是一個TToolButton組件。它包括一些與工具條有關的特性,可以簡化工具條上按鈕的配置,並增加一些顯示特性。TToolButton有這樣一些重要屬性。
AllowAllUp屬性允許一個組中的按鈕同時全部處於未選中狀態。缺省值是False。
Down屬性指定按鈕是否被選中。在設計期間把該屬性設置爲True,可以使按鈕初始化爲選中狀態,缺省值爲False。
DropDownMenu屬性把一個彈出菜單與按鈕相連。
ImageIndex屬性指定出現在按鈕上的圖標的索引號。
Indeterminate屬性確定按鈕是否處於一種既不是選中也不是未選中的中間狀態。缺省值爲False。
Wrap屬性強迫這個按鈕是這一行的最後一個按鈕,下一個按鈕從下一行開始。缺省值爲False。
Style屬性用來確定按鈕的樣式,它可以有五種不同的取值,這五種取值分別表示五種不同樣式的按鈕。
tbsButton表示按鈕正常顯示與一般的加速按鈕一樣。
tbsCheck表示單擊這種類型的按鈕時可以切換Down屬性。一旦你選中了該按鈕,那麼按鈕將保持選中狀態直到再次單擊。
tbsDropDown表示按鈕顯示成一個向下的箭頭。
tbsSeparator表示按鈕顯示成工具條上的一個空格。
tbsDivider表示按鈕顯示成工具條上的一個垂直線段。
Grouped屬性確定是否允許連續的多個tbsCheck類型的按鈕組成一組。缺省值是False。如果連續的多個按鈕,每個按鈕的Grouped屬性都設置爲True,同時Style屬性都設置爲tbsCheck,那麼這些組件一次只能選取一個。選中其中一個按鈕將使其他按鈕變成未選中狀態。

91) 問:如何用加速按鈕創建工具條?
答:工具條的另一種創建方法是使用面板組件+加速按鈕SpeedButton的方法。加速按鈕在前面曾經提到過,它與位圖按鈕很相似,也使用屬性Caption和Glyph放置文本和圖標,不過加速按鈕還有一些屬性是比較特殊的。
下面我們先介紹加速按鈕的屬性:
GroupIndex:通過GroupIndex屬性可以使加速按鈕像單選按鈕那樣使用。也就是說,把多個單選按鈕的GroupIndex屬性賦予相同的值以便組成一組,這樣這個組中的按鈕一次只能有一個按鈕可以被按下,當你按下一個按鈕時,其他按鈕就會彈起。需要注意的是GroupIndex必須大於0。如果GroupIndex屬性等於0,那麼表示該按鈕是一個普通的加速按鈕。
Down:屬性值可以控制按鈕是否處於按下狀態,當該屬性值爲True時,按鈕處於按下狀態。你可以在設計時把屬性Down設置爲True,這樣當程序運行時,按鈕一開始就處於按下狀態。
AllowAllUp:這個屬性用來指定一個組中的所有加速按鈕是否可以同時處於未被按下的狀態。當該屬性爲True時,單擊該組中被按下的按鈕,這個按鈕會彈起。當該屬性爲False時,單擊該組中被按下的按鈕,這個按鈕不會彈起。
如果你比較一下加速按鈕和TToolButton組件就會發現,它們都有上面介紹的這三種屬性,只不過TToolButton組件中使用屬性Grouped來完成類似於GroupIndex的功能。

92) 問:用加速按鈕設計工具條與用Toolbar組件相比有什麼不同?
答:用加速按鈕設計工具條時必須首先在窗體上放置面板組件,而且應該把它的Align屬性設置爲alTop(因爲工具條一般都放在窗口的頂部)。然後在面板組件上放置加速按鈕。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章