百度空间 | 百度首页 
               
 
查看文章
 
多层数据库开发(七)---:字 段 对 象
2008-09-03 17:33
第七章 字 段 对 象
  Delphi 4用TField来操纵数据集中的字段。不过,具体的字段实际上都是TField的派生类,因此,应用程序很少需要直接用到TField。
  当打开一个数据集的时候,Delphi 4会自动生成动态的、与数据类型有关的字段对象。当然,可以用字段编辑器创建永久的字段对象来代替动态的字段对象。
7.1 具体的字段对象
  Delphi 4支持24种类型的字段,它们都是从TField继承下来的,包括:
.TADTFieldOracle8的ADT字段。ADT是Abstract Data Type的缩写;
.TAggregateFieldTClientDataSet中自动维护的总计字段;
.TArrayField数组字段;
.TAutoIncFieldParadox表中的自动增长字段,取值范围从-2,147,483,648到2,147,483,647;
.TBCDFieldBCD字段;
.TBooleanField布尔字段;
.TBlobField二进制数据,理论长度2GB;
.TBytesField二进制数据,理论长度2GB;
.TCurrencyField实数字段,取值范围从5.0E-324到1.7E308;
.TDataSetField代表嵌套表的字段;
.TDateField日期字段;
.TDateTimeField日期和时间字段;
.TFloatField浮点字段,取值范围从5.0 * 10E-324到1.7 * 10E308;
.TBytesField二进制数据,最大字节数255;
.TIntegerField整型字段,取值范围从-2,147,483,648到2,147,483,647;
.TLargeintField长整型字段,取值范围从-263到263;
.TMemoField备注字段,理论长度2GB;
.TNumericField实数,取值范围从3.4 E-4932到1.1E4932;
.TReferenceField一个引用其他数据集的指针;
.TSmallintField整型字段,取值范围从-32,768到32,768;
.TStringField字符串字段,最大字节数8192,包括NULL字符;
.TTimeField时间字段;
.TVarBytesField二进制数据,最大字节数255;
.TWordField无符号整数,取值范围从0到65,535。
7.2 理解字段对象
  就像Delphi 4的数据访问构件如TTable、TQuery一样,TField也是非可视的,甚至在设计期都不能直接看到它,只能通过数据访问构件和数据控件间接地访问它。
  Delphi 4创建的字段对象与字段的数据类型有关,例如,对于字符串类型的字段,创建的是TStringField对象。对于浮点类型的字段,创建的是TFloatField对象。下面我们就以TFloatField为例,看看怎样操纵字段的显示属性:
.Alignment用于指定数据的对齐方式,如左对齐、居中、右对齐等;
.DisplayWidth用于指定数据的显示宽度(以字符数为单位);
.DisplayFormat用于指定数据的显示格式,如小数点的位置;
.EditFormat指定在编辑数据时显示数据的格式。
  对于不同类型的字段对象来说,它们的属性大部分是相同的,但也有一些属性是专用的,例如,TFloatField的Precision属性就是其他字段对象所没有的。字段对象的大部分属性只是影响数据在窗体上的显示属性,但也有些属性如Precision还影响用户输入和修改数据的格式。
  在一个打开的数据集中,所有的字段对象要么都是动态的字段对象,要么都是永久的字段对象。下面将详细介绍这两种不同类型的字段对象。
7.3 动态字段对象
  默认情况下,当把一个数据集放到数据模块上并且打开它时,Delphi 4就会为数据集中的每一个字段自动生成一个动态的字段对象。之所以说它是动态的,一方面是因为它是自动生成的,另一方面是因为它总是反映物理数据集的情况,对于不同类型的字段来说,生成的字段对象的类型也不同。如果数据集的结构或其他信息发生变化,当应用程序重新打开这个数据集时,就会基于最新的结构和信息重建所有的字段对象。
  动态字段对象的生存期是临时的,当数据集关闭时,这些字段对象也跟着消失。
  由此可见,动态字段对象的最大特点就是适应性强。利用这个特点,可以编写一些通用的数据库应用程序,它可以打开不同的数据集。要在应用程序中使用动态字段对象,您首先要把一个数据集构件放到窗体或数据模块上,再把一个TDataSource构件放到窗体或数据模块上,设置它的DataSet属性指定数据集构件。把一个数据控件放到窗体上,设置它的DataSource属性指定TDataSource 构件,有必要的话,还要指定要显示哪个字段。最后,把数据集构件的Active属性设为True,打开数据集,此时,就会自动创建动态字段对象。
  动态字段对象的不足之处是,要改变字段的显示属性、数据格式,需编写代码。即使您愿意写代码,无论如何也无法改变字段的显示顺序,不能把某些字段暂时隐去,也不能增加新的字段如“计算字段”、“Lookup字段”。而且,也不能改变字段的数据类型。所以,很多情况下,应用程序往往要用永久字段对象来代替动态字段对象。
7.4 永久字段对象
  用永久字段对象代替动态字段对象的最大好处是,可以在设计期设置它的属性。此外,永久字段对象还具有以下优势:
.可以选择部分字段;
.可以增加新的字段,包括“计算字段”和“Lookup字段”;
.可以改变原有字段的数据类型。
7.4.1 怎样创建永久字段对象
  要创建永久字段对象,就要用到字段编辑器。用永久字段对象能够保证应用程序每次运行时,用户看到的总是这几个字段,即使数据集的结构已发生改变。这样,不管是数据控件还是程序代码都不必担心因为数据集的结构发生变化而导致数据控件和程序代码不能适应。不过,如果一个永久字段对象基于的源字段被删除,就会触发异常。
  创建永久字段对象的一般步骤是:
  第一步是把一个数据集构件如TTable放到数据模块上,设置DatabaseName属性指定要访问的数据库,设置TableName属性指定要访问的表。
  第二步是双击TTable构件,Delphi 4将打开字段编辑器,如图7.1所示。
  图7.1 字段编辑器
  字段编辑器由标题栏、导航按钮和一个可复选的字段列表组成。
  标题栏显示数据集的名称包括数据集所在的窗体或数据模块的名称,例如,假设数据集叫Customers,放在数据模块CustomerData上,标题栏就显示CustomerData.Customers。
  四个导航按钮用于浏览数据集的记录,它们能够向前翻一个记录、向后翻一个记录、翻到第一个记录以及翻到最后一个记录。如果数据集的Active属性设为False或者数据集是空的,这四个导航按钮将变灰。
  导航按钮下面是一个可复选的列表框,列出了所有的永久字段。刚开始打开字段编辑器的时候,列表是空的,因为默认情况下,Delphi 4生成的是动态字段对象。
  第三步是单击鼠标右键,在弹出的菜单中选择“Add Fields”命令,弹出“AddFields”对话框,如图7.2所示。
  图7.2 选择字段
  选择一个或几个字段,然后单击OK按钮。Delphi 4将根据您选择的字段创建永久字段对象,这些永久字段对象的名称将出现在字段编辑器中,如图7.3所示。
  图7.3 列出永久字段对象的名称
  导航按钮都是灰的,可能是因为数据集没打开。只要创建了一个永久字段对象,以后每次打开数据集时,Delphi 4就不会创建动态字段对象。对于同一个数据集来说,动态字段对象和永久字段对象不可能同时存在。
  每次打开数据集时,Delphi 4都会在数据集中检查每个永久字段对象所基于的字段是否还存在,如果字段已不存在,Delphi 4将触发异常,并且拒绝打开数据集。
  一旦生成了永久字段对象,就可以把它看作是一个构件,在对象观察器中设置它的属性,建立事件句柄。事实上,一个永久字段对象就是一个构件。
  对于那些数据控件来说,只要创建了一个永久字段对象,就只有创建了永久字段对象的字段才能被数据控件显示。
  创建了永久字段对象后,可以在单元文件中找到该字段对象的声明,示例如下:
TypeTForm1 = Class(TForm)
Table1: TTable;
Button1: TButton;
Table1XXH1: TStringField;
Table1XXH2: TBytesField;
Procedure Button1Click(Sender: TObject);
Private{ Private declarations }
Public{ Public declarations }
End;
7.4.2 调整永久字段的顺序
  永久字段对象在字段编辑器中的排列顺序就是这些字段在数据库栅格(TDBGrid)中的显示顺序。因此,要改变字段的显示顺序,可以在字段编辑器中改变永久字段对象的排列顺序,调整的办法是:先选择一个字段,然后用鼠标把它拖到另一个位置,也可以按Ctrl+Up键把字段的顺序上移,按Ctrl+Dn键把字段的顺序下移。
  如果选择了多个字段,而且这些字段本来并不是连续的,把它们拖到一个新位置后,这些本来不连续的字段现在也变成连续的了。
7.4.3 增加新的字段
  使用永久字段对象的另一个好处是,可以增加新的字段或者替换原有的字段。Delphi 4允许增加五种类型的字段:
.Data用于替换原有的字段,例如,改变字段的数据类型;
.Calculated增加一个“计算字段”,该字段的值由OnCalcFields事件给出;
.InternalCalc类似于“计算字段”,用于多层体系结构的客户程序中;
.Lookup增加一个“Lookup”字段;
.Aggregate增加一个“总计字段”。
  上述五种类型的字段仅仅用于显示,它们的数据只在运行期有意义,不会影响原来的数据集。
  要增加一个新的字段,在字段编辑器上单击鼠标右键,在弹出的菜单中选择“New Field”命令,弹出“New Field”对话框,如图7.4所示
  图7.4 创建新字段对话框
  “New Field”对话框由三部分组成:“Field Properties”分组框、“FieldType”分组框和“Lookup Definition”分组框。
  “Field Type”分组框中有三个单选按钮,用于指定新创建的字段的生成类型(不是数据类型),默认的类型是“Data”,如果选择“Lookup”,下面的“LookupDefinition”分组框就被激活。此外,也

类别:多层开发 | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu