程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++ Builder初學問與答4

C++ Builder初學問與答4

編輯:C++入門知識

  4.列表類組件

  31)問:當我需要使用多個選項的時候,使用單選按鈕或復選框來進行選擇不是很恰當,因為在窗體上放置大量的按鈕既不利於布局的美觀,又會消耗大量的系統資源,C++Builder有什麼解決辦法嗎?

  答:可以使用列表框(ListBox、CheckListBox)或組合框(ComboBox)這兩類最常用的列表組件。

  32)問:列表框有那些主要屬性?

  答:列表組件ListBox在缺省情況下,只能進行單項選擇,當屬性MultiSelected為True時,可以進行多項選擇。這時你只要單擊想要的選項,那麼這些選項都會被選中。

  Items屬性:列表框中的所有選項都是通過這個屬性來進行訪問的。設置時只要點擊Items右邊的“…”就可以編輯了。

  當屬性ExtendedSelect也等於True時,有兩種方法可以進行多項選擇。一種是單擊選項同時按下Ctrl鍵,這樣可以選中兩個選項之間的所有選項。它的缺省值為False。

  Sorted屬性確定列表框中顯示的內容書否按照字母順序排列。缺省值為False。

  當不允許多項選擇時,我們通過屬性ItemIndex就可以返回被選中的選項。但是,如果打開了多項選擇,那麼屬性ItemIndex只返回最後個被選中的選項序號(有些書上也說返回選中選項中具有輸入焦點的選項序號,但我覺得這種說法有點不易讓初學者理解)。

  SelCount屬性在MultiSelected屬性為True時,指出了列表框中被選中項目的個數。當MultiSelected屬性為False時,它的值為-1。

  Selected屬性指出了列表框中的某個項目是否被選中。

  TcheckListBox是從TcustomListBox繼承下來的的,TListBox也是直接從TcustomListBox繼承下來的,因此這兩個組件是兄弟關系,它們的屬性和使用都非常相似。下面來看看它的不同之處:

  AllowGrayed屬性和多選按鈕一樣,當屬性值為True時,則列表框中的選項有三種狀態:選中、未選中和選中但變灰;當屬性值為False時,列表框只有兩種狀態。缺省值為false。

  Checked其聲明為:_property bool Checked[int Index];這個屬性用來返回或者設置列表框中的指定選項是否被選中。其中參數Index表示指定的選項的序號。

  32)問:那麼,組合框和列表框相比有什麼相似之處和不一樣的地方呢?

  答:首先,從外觀上來說,列表框占據了比較大的空間,而組合框只需要一行的空間就可以了。從另一方面來說,組合框還帶有一個編輯框,用戶可以直接在編輯框中輸入文本,組合框在一般情況下只顯示這個編輯框,當用戶單擊組合框右邊的下拉箭頭時,就會顯示一個包含所有選項的下拉列表。

  組合框和列表框最大的不同是組合框不能進行多項選擇。

  組合框與列表框有一定的相似之處,就是它們都能夠包含許多的選項。但是組合框還是有不少獨特的屬性。

  33)問:組合框有哪些常用屬性及事件呢?

  答:屬性Style決定著組合框的樣式,C++Builder為組合框定義了五種不同的樣式。

  CsDropDown:這時為一個標准的組合框,由一個編輯框和下拉列表組成。

  CsDropDownList:與標准組合框相似,但不能在編輯框中輸入文本。

  CsSimple:沒有下拉列表的組合框,只是一個編輯框,也就是說只能輸入不能選擇。

  csOwnerDrawFixed和csOwnerDrawVariable這兩種樣式的組合框常用於需要圖像作為項目時,當然你輸入字符串也可以。前面一種樣式組合框中各個項目的高度是固定的,而後面一種樣式的高度可以變化,也就是說,各個項目的高度可以不一樣,此外,在這兩種樣式中,編輯框是不可輸入的。

  Text屬性用來設置或者返回組合框中顯示出來的文本內容。

  當編輯框中的內容發生變化時將觸發OnChange事件。所以在組合框裡我們用的就是它。

  注意下面四段兩組語句的區別與聯系:

  

//………………第一組
void _fastcall TForm1::ComboBox1Change(TObject *Sender)
{
   if(ComboBox1->Text!=””)
     Edit1->Font->Size=StrToInt(ComboBox1->Text);
}
上面的代碼還可以寫成下面的樣子,它們的作用是一樣的:
void _fastcall TForm1::ComboBox1Change(TObject *Sender)
{
   if(!ComboBox1->Text.IsEmpty())
     Edit1->Font->Size= ComboBox1->Text.ToInt();
}
//………………第二組
void _fastcall TForm1::ComboBox2Change(TObject *Sender)
{
   Edit1->Font->Name= ComboBox2->Text;
}

  • 首頁
  • 上一頁
  • 1
  • 2
  • 下一頁
  • 尾頁
  • 共2頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved