VCL元件之列表框(ListBox)與組合框(ComboBox)

苦咖菲And海發表於2012-09-23

ListBox元件與ComboBox元件

列表框與組合框元件也被廣泛的使用。列表框表示標準Windows列表框,它提供使用者選的一列選擇表。如果列表框包含更多的項,不能一次顯示,滾動欄提供存取列表框中其餘項。

New Term

一些列表框(list boxes)是自繪(Owner-Draw)表框,在自繪列表框中,程式設計師負責從表框中畫表項。

如果需要,可以自繪列表框,也許沒有人意識到,自繪列表框相當普遍,Delphi中的ToolBar Editor對話方塊包含兩個列表框,如下圖:

 

左邊1號表框是普通的列表框,它列出能選擇的可能按鈕組。右邊2號列表框是自繪列表框,它顯示出現在工具欄上的實際按鈕,同時顯示了按鈕的文字描述。

組合框是特殊化的列表框,實際上組合框是列表框與編輯控制元件的組合。使用者可以從列表中選擇或者在編輯框中輸入一個值。當使用者從下拉選單中選擇項時,該項放到了編輯控制元件中。有五種不同型別的組合框。組合框的不同型別由Style屬性決定。

組合框型別

  • csDropDown——預設值,下拉組合框。使用者可以從列表中選擇一個條目,或在編輯區中輸入新項。這種型別的ComboBox可進行查詢,即輸入1個或多個字元並按上下鍵可以選擇與使用者輸入字元最相匹配的條目。
  • csSimple——一個不含下拉箭頭的簡單組合框,使用者可以用鍵盤上的上下方向鍵選擇一個條目,或在編輯區域輸入新的條目
  • csDropdownList——下拉選單組合框,在這種型別的組合框中,編輯框是“只讀”的,使用者必須選擇一個條目,但也可鍵入條目第一個字母選擇它。例如,鍵入P鍵可選擇所有以P打頭的條目。
  • csOwnerDrawFixed——條目不一定是字串,可以是自繪影象,在顯示每一項之前,都會觸發OnDrawItem事件。項的高度由ItemHeight屬性指定。
  • csOwnerDrawVariable——條目是可以是自繪影象,高度是可變的。在顯示每一項之前,都會觸發兩個事件。在OnMeasureItem事件響應中,我們可以指定項的高度。在OnDrawItem事件控制程式碼中畫出每一項。

下面我們有一個ComboTst的程式,說明了不同型別的組合框,執行程式實際操作一下感受下它們是怎樣工作的:

 

星星ComboTst程式下載:ComboTst.rar

編輯控制元件的屬性

 

屬性 應用 描述
Columns ListBox 指定在一欄中的條目列數,預設值為0
ExtendedSelection ListBox 使用者能否選擇一系列連續的條目,Shift+Click或Ctrl+Click。預設值為True
IntegralHeight ListBox 是否允許只顯示出條目標題的一部分,如果設為False,那麼列表框的高度總是一項高度的整數倍,不會出現顯示不完整的情況。預設值為False
ItemHeight Both 指定條目標題的高度,預設值為13
Items Both 包含所有條目的字串列表,TStrings例項
MaxLength ComboBox 指定使用者可以在編輯區輸入的最大字元數,預設為0,表示無限制
MultiSelect ListBox 使用者能否多選,和ExtendedSelection屬性配合使用
Sorted Both 指定列表框中的條目是否按字母順序排列
Style Both 指定列表框的樣式
TabWidth ListBox 指定列表框中一個製表符所佔畫素值
Text ComboBox 用於設定或返回ComboBox上顯示出來的文字,對於csSimple和csDropDown型別的組合框,使用者可以直接修改文字,對於其他型別的組合框,Text是在執行期有效的只讀屬性

執行期屬性

 

屬性 應用 描述
ItemIndex ListBox 返回當前被選擇的條目序號,如果有多個條目被選擇,則返回當前有輸入焦點的條目索引值,如果無選擇專案返回-1,第一項為0
SelCount ListBox 返回同時被選取的條目數目
Selected ListBox 用於判斷指定索引號條目是否被選擇
SelLength ComboBox 返回使用者在編輯區選定的字元數
SelStart ComboBox 返回使用者在編輯區選定字元的起點序號,從0開始
SelText ComboBox 返回使用者編輯區中選擇的文字
TopIndex ListBox 指定顯示在列表框最上方的條目的序號

對於以前看到的編輯元件,有極少的ListBox和ComboBox方法。

  • Clear方法用於清除控制元件的所有項。
  • ItemAtPos方法返回指定X,Y座標的列表項。
  • SelectAll方法選擇ComboBox中編輯框的文字。

在處理組合框和列表框時最常用的事件就是OnChange與OnClick事件。用這些事件決定在列表框中是否選擇了某一項。

Note

點選組合框的編輯部分或下拉按鈕不會產生OnClick事件。只有在組合框的列表框部分點選時才會發生OnClick事件。

  • OnChange事件用來檢查組合框的編輯部分的變化,就像用於編輯控制元件一樣。
  • OnDropDown事件用於組合框的下拉按鈕被點選時檢查。
  • OnMeasureItem和OnDrawItem都用於自繪列表框與自繪組合框。
分類: VCL

 

相關文章