11.工具條元件
87)問:工具條是windows程式設計經常要用的, c++builder能不能實現這個功能呢?
答:當然可以,工具條是由許多具有圖形的按鈕組成的,這些按鈕被分隔符分隔成許多組,每個組都能夠完成特定的工作。工具條上的按鈕具有與點陣圖按鈕相似的特性——可以擁有多個位圖,當按鈕處於不同狀態時,例如按下、失效等,將顯示不同的點陣圖。以前c++builder製作工具條的方法是通過把加速按鈕放在面板元件panel上實現的。現在,我們不必使用這兩種元件的組合,只要使用*******就可以建立工具條了。工具條是比較難掌握的,它之所以不容易掌握是因為它包含的ttoolbutton元件有三個屬性:grouped,allowallup和down,它們的組合可以產生各種不同效果的按鈕組。這三個屬性我們一定要好好理解。
88)問:那請給我介紹一下*******這個元件的使用方法好嗎?
答:好的,我們先從*******的屬性入手,通過對一些重要屬性的分析來了解它。*******包含一些前面沒有見過的屬性:
buttonheight 屬性指出了工具條中按鈕的高度。
buttonwidth 屬性用來設定工具條中按鈕的寬度。
flat 屬性為true時,使工具條透明,同時使工具條上按鈕之間的邊界消失。俗稱平面工具條,它的預設值為false。
indent 用來在工具條的左邊建立乙個邊沿區。
showcaptins 確定是否允許在工具條的按鈕上顯示標題。預設值為false。
wrapable 設定是否允許工具條上的按鈕換行。預設值為true。
list 屬性,當這個屬性為true時,工具條上按鈕的圖示在左,標題在右。為false時,按鈕的圖示在上,標題在下。預設值為false。
images 用來設定正常情況下,按鈕上顯示的圖示列表。
hotimages 用來設定當滑鼠移動到按鈕上顯示的圖示列表。
disabledimages 用來設定按鈕失效時顯示的圖示列表。
工具條上所有按鈕顯示的圖示就包含在這三個圖示列表中。
在前面介紹的listview元件中,屬性largeimages和**allimages分別表示在兩種不同的狀態下顯示的圖示列表。*******的這三種屬性也有類似的特點,它們分別表示在正常狀態、滑鼠指向工具條以及按鈕失效時顯示的圖示列表。
此外,還有幾個執行時態屬性:
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)問:用加速按鈕設計工具條與用*******元件相比有什麼不同?
答:用加速按鈕設計工具條時必須首先在窗體上放置面板元件,而且應該把它的align屬性設定為altop(因為工具條一般都放在視窗的頂部)。然後在面板元件上放置加速按鈕。
C Builder初學問與答1
一直以來都想寫一點為bcb初學者快速入門的東西,前不久寫了幾篇 閒談bcb 想把自己學習bcb中如何來解決難點的方法說給大家,沒想到被罵得不成樣子。本想不寫了,但覺得這些東西留下來能做什麼呢?還是用另一種方法來重新演譯我的思維吧,最近有些忙,那幾篇沒有寫完的文章,我也會盡快寫完的,至於 深入qr 我...
C Builder初學問與答3
21 問 在進行 windows 程式介面設計中,經常會用到按鈕,在 c builder 中,按鈕一定是通過按鈕元件來實現的嗎?答 是的,並且 c builder 的按鈕類元件十分豐富。bcb 提供了兩類按鈕類元件 一類是執行類按鈕,另一類是資訊類按鈕。所謂執行類按鈕是指它們通常用來啟動程式執行的,...
C Builder初學問與答8
8.圖形類元件 59 問 windows是乙個圖形系統,c builder是怎樣處理圖形的呢?答 c builder通過提供圖形元件來處理圖形,其中比較常用的有影象元件 image 幾何圖形元件 shape 和畫板元件 paintbox 前兩個元件位於additional頁中,畫板元件位於syste...