14.4 字段对象的使用
Ttable和TQuery部件中有一个TField类型的属性Fiedls,Fields是TField类型的对象的列表,TField对象列表是Delphi数据库中较难以理解的一个对象,它是 TTable 部件和TQuary部件的一部分,它们是不能够选择到窗体中的独立的部件,而且无论是在设计阶段还是在程序运行过程中,它们都没有可见的图像。即使到Object Inspector窗中察看它们也很困难。 Tfield对象是在打开磁盘上的数据库表时动态产生的,并在数据库表被关闭时自动消失,TField对象可以控制表中的每一列是否在数据浏览部件中显示以及以何种格式显示等等。通过字段编辑器(Fields Editor)我们可以建立永久性的TField 对象列表代替动态的Tfield对象列表供Delphi应用程序使用,通过Fields Editor建立的永久性的字段对象会自动地加入到程序库单元的TForm类型定义中,它们保存在应用程序中,即使数据库表的基本结构发生了改变,它也是一直保留着,当然如果修改后的表中使得原来所定义的字段对象不再存在,Delphi应用程序在运行过程中会给出现错误信息。 14.4.1 字段对象的类型 字段对象TField对应数据库记录中的各个字段,因为数据库记录中的字段有多种数据类型,因此对记录字段可能出现的每一种数据类型都有一个独立的TField类型与之对应。TField的类型如表14.4所示 表14.4 字段对象的类型━━━━━━━━━━━━━━━━━━━━━━━━━字段对象的类型 对应的数据类型─────────────────────────TBooleanField 布尔型数据TCurrentyField 货币型数据TStringField 字符串数据TIntegerField 整数型数据TBLOB 大二进制对象━━━━━━━━━━━━━━━━━━━━━━━━━ 在大多数情况下可能使用的是TStringField和TIntegerField类型的字段对象,从编程的角度来看这些TField对象的不同类型是完全相同的,应用程序是根本不必关心TField对象的实际类型,它们之间的主要区别在于:它们内部保留的以及它们和数据库表之间传递的数据类型不一样。14.4.2 创建永久性的字段对象 我们知道字段对象在设计和运行阶段都是不可见的,它既可以随着磁盘上的数据库文件被打开时动态地生成也可以通过字段编辑器Fields Editor来创建它。 在应用程序中使用Fields Editor可以为数据库表中的字段创建相应的永久性的TField对象,TField 部件是不可见的部件,但是通过它,我们可以定义数据库表中各字段的显示属性和显示顺序以及控制字段的取值范围等。下面的例子,告诉我们如何使用Fields Editor定义Customer.DB表中的四字段,并在网格中显示表中的记录信息。操作步骤:1、建立一个基于 customer. DB 表的数据库应用窗体,并在窗体中用一个网格显示customer.DB中的全部字段,详细方法请参见14.1节,建好的窗体如图14.1所示。2、设置窗体中Table1的Active属性为True,使网格显示表中的记录。3、选中Table1并双击鼠标左键,打开字段编辑器Fields Editor,缺省情况下字段列表为空。4、单击鼠标右键弹出一个弹出式菜单,然后选择Add Fields菜单项,缺省情况下表Customer.DB中的全部字段被选进字段列表框。从字段列表框中选择你要在网格中显示的字段,具体做法是:单击Custno字段,并按住CTR键,再单击Company、Phone、LastInviceDate字段,然后单击OK按钮,确认被选择的四个字段,时窗体中的DBGrid1中只显示刚才被选中的四个字段值,而不再显示表中其它的字段值。