C++ Builder 初學問答 (十一)

來源:互聯網
上載者:User

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(因為工具條一般都放在視窗的頂部)。然後在面板組件上放置加速按鈕。

  一般要利用按鈕的Caption和Glyph屬性為加速按鈕設定文本和表徵圖。如果這些按鈕只是像普通按鈕那樣操作的話,那麼這樣設定就可以了。但是如果這些按鈕要像選項按鈕那樣使用,那麼還必須對GroupIndex屬性進行設定。

 93)問:那如何用加速按鈕來設計工具條呢?

  答:我們要用到Additional頁的可控組件ControlBar、Speedbutton與Win32頁面中的ToolBar。下面來看一下他的實現:

  ①雙擊ControlBar,把她放到表單中;

  ②雙擊ToolBar,並將其放到ControlBar上;

  ③在ToolBar上添加SpeedButton;

  ④選中一個SpeedButton,在Object Inspector中找到Glyph屬性,來選擇圖片。

  *SpeedButton的Flat屬性改為true,則按鈕為透明的

  *AutoSize改為true,則容器大小隨容件變化

  12.狀態條組件
  94)問:在Windows編程中,狀態條可以顯示程式當前的一些狀態資訊,是一個很有用的組件,它也被廣泛應用在許多程式中,請問,C++Builder是怎樣編寫狀態條的?

  答:狀態條StatusBar實際上是由一組狀態面板組成的,通常顯示在應用程式視窗的底部,它的功能主要是顯示一些提示資訊和狀態資訊。例如,C++Builder的代碼編輯器底部就顯示了一個狀態條,而且顯示了多個狀態面板。

  狀態條可以只顯示一個狀態面板,也可以顯示多個狀態面板。當顯示多個狀態面板時,狀態條被分割為幾個部分,每個部分都有自己的Text屬性,通過這個屬性就可以在狀態條顯示資訊了。

  如果要在狀態條上顯示多個狀態面板,就需要把狀態條的SimplePanel屬性設定為False,否則只能顯示一個狀態面板。

  如果狀態條只需要顯示一個狀態面板,那麼只要簡單地在表單上放置狀態條就可以了。這時表單上的文本儲存在屬性SimpleText中。如果要顯示多個狀態面板,那麼就需要使用面板編輯器建立多個狀態面板。單擊屬性Panels的Value列中的省略符號按鈕(或者雙擊菜單條),就可以開啟狀態面板編輯器。

  單擊編輯器上的按鈕Add可以增加狀態條上的狀態面板。單擊面板編輯器中新建立的狀態面板,在對象編輯器中就會列出該狀態面板的屬性。

  95)問:可以看出狀態條上的狀態面板有五個屬性,他們分別有什麼作用呢?

  答:Alignment屬性用來確定面板中所顯示文本的對齊。它的可能值為:taLeftJustify表示靠左對齊、taRightJustify表示靠右對齊和taCenter表示置中對齊。預設值為taLeftJustify。

  Bevel用來確定面板的樣式。共有三種方式,None表示面板處於平整的狀態;Lowered表示面板下沉;Raised表示突起。

  Style屬性用來確定在面板中顯示的內容是Text文本還是OwnerDraw自繪製圖形方式。如果要在面板中作圖,那麼就需要編寫OnDrawPanel事件處理過程。

  Text屬性用來儲存面板中顯示的字串。

  Width用來設定面板的長寬。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.