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


ListBox組件與ComboBox組件

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

New Term

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

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

0191

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

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

組合框類型

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

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

0192

星星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都用於自繪列表框與自繪組合框。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM