本文详细介绍了Delphi数据控件的属性,方法和使用技巧。
作者:linj 来源:论坛 2007年10月31日
关键字:
显示和编辑图像
TDBImage构件可以认为是TImage构件的数据感知版本,它可以显示BLOB字段的内容。TDBImage构件从数据集中检索了图像后,在本地以DIB格式建立一个副本。
可以调用CutToClipboard或CopyToClipboard函数把图像剪切或复制到剪贴板中,调用 PasteFromClipboard可以从剪贴板中粘贴图像。
如果Stretch属性设为True,图像将自动缩放,以适应TDBImage构件的大小,这样就可能造成图像变形。
如果AutoDisplay属性设为True,当DataField属性所指定的字段的内容改变了时,TDBImage构件会自动刷新。如果这个属性设为False,TDBImage构件上只显示字段名,用户必须双击这个构件才能刷新数据,当然也可以调用LoadPicture来刷新数据。
用列表框和组合框显示和编辑数据
有4个特殊的数据控件可以用列表框和组合框显示和编辑数据,它们可以认为是标准的列表框和组合框的数据感知版本。下面简单介绍这4个数据控件:
1、TDBListBox用列表框显示一组数据,让用户从中选择一个值。
2、TDBComboBox用组合框显示一组数据,让用户从中选择一个值。
3、TDBLookupListBox用列表框显示另一个数据集中的一组数据,让用户从中选择一个值。
4、TDBLookupComboBox用组合框显示另一个数据集中的一组数据,让用户从中选择一个值。
TDBComboBox
TDBComboBox构件实际上是TComboBox构件的数据感知版本,它能以组合框的形式显示一组数据,让用户从列表中选择一个值或直接输入一个值。
Items属性用于设置列表中要显示的一组数据。在设计期,可以单击Items属性边上的省略号按钮打开一个字符串列表编辑器,然后输入一些字符串。
DropDownCount属性用于设置当用户下拉组合框时不需要加滚动栏就能显示的项的个数,默认是8,表示用户下拉组合框时如果项的个数超过8个才加上滚动栏。如果实际的项数还没有DropDownCount属性指定的值多,下拉的组合框的高度自动缩小。
在Style属性设为csOwnerDrawFixed的情况下,ItemHeight属性用于设置项的高度。
显示另一个数据集中的数据
TDBLookupListBox构件和TDBLookupComboBox构件分别以列表框和组合框的形式显示另一个数据集中的数据。
假设有一个表格叫OrdersTable,其中包含一个CustNo字段,用于表达客户的编号,但OrdersTable表中除了客户的编号外,不包含客户的其他信息。而另一个表格假设叫CustomersTable,除了有CustNo字段外,还有诸如客户的公司名称、地址等信息。
TDBLookupListBox构件可以实现这样的功能,当用户在OrdersTable中浏览记录时,程序首先在CustomersTable中查找与CustNo字段匹配的记录,如果找不到,就从列表中查找与Company字段匹配的字符串;如果找到,就选择这一项。
用复选框处理布尔类型的字段
TDBCheckBox构件可以认为是TCheckBox构件的数据感知版本,用于处理布尔类型的字段。例如,可以用一个复选框来表示客户是否已付帐。
TDBCheckBox构件实际上是把字段的值与预设的两个字符串比较,这两个字符串分别由ValueChecked和ValueUnChecked属性指定。如果字段的值与ValueChecked属性指定的字符串匹配,就选中复选框。如果字段的值与ValueUnchecked属性指定的字符串匹配,就不选中复选框。注意:ValueChecked属性和ValueUnchecked属性所指定的字符串不能相同。
一般情况下,ValueChecked属性设为“True”、“Yes”之类的字符串,但也可以是其他任意的字符串,甚至是一组字符串,彼此之间要用分号隔开,例如:
DBCheckBox1.ValueChecked := 'True;Yes;On';
上述情况下,当字段的值只要与其中一个字符串匹配,就选中复选框。要说明的是,ValueChecked属性指定的字符串是大小写敏感的。一般情况下,ValueUnchecked属性设为“False”、“No”之类的字符串,但也可以是其他任意的字符串,甚至是一组字符串,彼此之间用分号隔开。如果字段的值既不与ValueChecked属性指定的字符串匹配,也不与ValueUnchecked属性指定的字符串匹配,复选框就变灰。