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都用于自绘列表框与自绘组合框。

你可能感兴趣的:(combobox)