修改字段对象的属性
字段对象的访问
字段对象在应用程序中有动态生成的也有通过字段编辑器Fields Editor 创建的永久性的它们虽然在设计和运行阶段都是不可见但是它们跟其他的对象一样都拥有自己的属性方法和事件因此我们在应用程序中是可以对字段对象进行控制和访问的
因为动态字段对象是没有自己的名字的永久性的字段对象有自己的名字所以对这两种字段对象的访问方法是不一样的
动态字段对象的访问
动态字段对象存在于数据集部件TTable和TQuery部件中它们是随着磁盘上的数据库文件的打开而动态生成的并且每一个字段对象对应于数据库表中的一个字段(即记录的一列)TTable或TQrery部件中所有的字段对象存在属性Fields列表中Fields列表中的字段对象就像数组元素一样拥有自己的索引号我们可以用这个索引号来访问字段对象索引号在程序运行时赋值从开始表中最左边的一列(第一个字段)的索引号为紧接着右边一个为以此类推访问这些属性的方法和处理其他对象一样
TableFields[]DisplayLabel:=标识符
上述代码让我们访问与Table相连的数据库表中的第一个字段并为该字段指定一个标题这是通过设置它的DisplayLabel属性值为一个特定的标识符来实现的
通过索引号来访问Fields属性中的字段在使用For循环对列号进行迭代时会非常有用但是在大多数简单应用程序中通过列名(字段名)来访问字段会更加明白而且易读在TTable部件中提供了一个名为FieldByName的方法以便让我们通过列名访问字段对象
TableFieldByName(CustNo)DisplayLabel:=标识符
通过这种途径同样可以访问CUSTOMERDB表中的CustNo字段并为该字段指定一个标题信息
现在我们可以建立一个允许用户通过字段名和索引号来访问CustomerDB 表中的字段对象的简单窗体
字段对象的访问
在该应用窗体的运行过程中我们通过程序来访问其中的字段对象并设置有关的属性这一控制过程我们放在窗体的OnCreate事件处理过程中
例 在窗体的Oncreate事件处理过程中访问字段对象
procedure TFormFormCreate(Sender:TObject)
Begin
with Table Do
begin
{通过索引号访问字段对象}
Field[]DisplayLabel:=客户编号;
{通过字段名访问字段对象}
FieldByName(Company)DisplayLabel:=公司名称;
FieldByName(Phone)DisplayLabel:=电话号码;
FieldByName(LastInvoiceDate)DisplayLabel:=购买日期;
end;
end;
在程序运行过程中访问字段对象
永久性字段对象的访问
通过字段编辑器Fields Editor 建立的永久性字段对象的访问相对于动态字段对象的访问要简单得多我们在程序中可以直接通过字段对象的名称(即Name属性)进行访问
例如
TableCustNoDisplayLabel:=客户编号;
TableCustNoDisplayWidth:=;
字段对象的读取和赋值
通过字段对象的Value属性我们可以读取字段对象的值例如在如图所示的窗体中单击Read按钮便可以将CustomerDB表中当前记录的COMPANY字段的值读取到编辑框Edit中
读取字段对象的字段值
窗体中各部件的属性如表所示
表 各部件的属性
━━━━━━━━━━━━━━━━━━━━━━━━
部件的属性 属 性 值
────────────────────────
ButtonCaption &Read
ButtonName Button
LabelCaption 字段值
LabelName Label
EditText
EditName Edit
━━━━━━━━━━━━━━━━━━━━━━━━
其它部件的的属性跟前面的例子一样
为Read按钮编辑的OnClick事件处理过程如下
procedure FormTButtonClick(Sender:TObject)
begin
EditText:=TableCompanyValue;
end;
在这里要注意的是从字段对象中读取字段值时必须要将它赋给与之数据类型相匹配的变量否则会出错在上面的程序代码中TableCompany的类型是TStringField 即是字符串类型的字段而编辑框Edit的属性Text的类型也是字符串型的因而它们是匹配的如果类型不匹配则要经过一定的转换才能够相互赋值如
EditText:=TableCustNoValue
这条代码在运行过程中将会出错因为TablelcustNo是TFloatField 类型即是数值型数据要在编辑框Edit中显示数值型数据要经过下列转换
Edittext:=TableCustNoAsString;
AsString是字段对象的属性通过字段对象的AsString属性可以读取字段值并且将它转换成字符串类型字段对象的字段值可以转换成以下几种类型的数据
AsString: 将字段值转换成字符串数据
AsBoolean: 将字段值转换成布尔型数据
AsDateTime: 将字段值转换成日期时间数据
AsFloat: 将字段值转换成数值型数据
AsInteger: 将字段值转换成整数型数据
下面的程序代码是从字段对象中读取字段值并将它显示在编辑框Edit中或者将字段值赋给相匹配的变量
[] [] [] []