版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、15.6.1 字段部件字段部件在应用程序中始终是不可见的部件。在程序运行过程中是如此,在程序设计阶段也是如此,但是它在应用中起着非常重要的作用,可以说它是所有数据浏览部件从数据库表中显示、编辑数据的基础。这是因为字段部件直接对应着数据库表中的字段,浏览和修改表中的数据必须要通过字段部件,同时字段部件所拥有的属性可以用来说明数据库表中对应的字段的数据类型、当前的字段值、显示格式、编辑格式等,字段部件的事件如OnValidate可以用来设定输入字段值时进行有效性检验。数据库表的每一列在应用程序中都有其对应的一个字段部件,在缺省情况下,当TTable或TQuery的Active属性被置为False或
2、调用close方法时,与表中各列对应的字段部件也随即消失,要想为应用程序创建永久性的字段部件,我们必须要在程序设计阶段使用字段编辑器(Fields Editor来创建。使用字段编辑器创建永久性字段的好处是:我们在程序代码中利用永久性字段部件可以更加有效、方便、可靠地访问数据库表中记录的各字段值,在任何时候我们都可以以同样的字段顺序、固定的字段显示表中的记录,即使数据库表的结构已发生了变化。当然如果在数据库表中与字段部件对应的字段已经不存在时,应用程序就不能正常地执行下去了,Delphi会弹出一个错误信息框,告诉用户表中的字段已经不存在了。15.6.1.1 字段部件的属性及应用字段部件具有很多的
3、属性,通过设置字段部件有关的属性,可以控制字段对象在数据浏览部件中的显示方式、字段值能否被修改等。特别是对于用字段编辑器创建的永久性的字段部件,我们在程序设计阶段便可以在Object Inspector中方便地选取字段部件, 进行有关属性的设置。字段部件的主要属性如表15.6所示,该表中列出的属性只是字段部件的部分属性,它主要用来控制字段对象的显示方式。表15.6 字段部件的主要属性属性名 功 能Alignment 说明字段值在数据浏览部件中显示时的对齐方式:左对齐、右对齐、居中三种方式。Calculated 说明字段是否是计算字段,属性值为True时,该字段是计算字段、字段值可以根据表中其它
4、字段的值计算得出。Currency 等于true时,以货币格式显示数值,等于False时,不以货币格式显示数值型数据。DisplayFormat 用于说明字段值在数据浏览部件中的显示格式DisplayLabel 字段在网格(TDBGrid部件中显示时,为字段指定显示标题。DisplayNidth 字段在网格(TDBGrid部件中显示时,为字段指定显示宽度,单位是字符数。EditFormat 说明字段在数据浏览部件中的编辑输入格式EditMask 在进行字段值的编辑输入时,限定输入字段值的过滤条件(即字段值的范围。 FieldName 该字段部件对应实际数据库表中的字段的名字Index 该字段部
5、件在数据集所有字段部件中的顺序号MaxValue 说明可以为该字段输入最大的数值MinValue 说明可以为该字段输入最小的数值Name 字段部件的名字ReadOnly 等于true时,只能读取该字段的字段值,不能修改;等于False时,可以对该字段的字段值进行读写。Size 说明字段的大小,单位是字符数Visible 为True时,该字段可以在TBDBGrid部件中显示;为False时,该字段不能在TDBGrid部件中显示表15.6中的属性并不是所有类型的字段部件都拥有的,如一个TStringField类型的字段部件是没有Currency、MaxValue、MinValue和DisplayF
6、ormat属性的,一个TFloatField类型的字段部件是没有Size属性的。对于布尔型属性,在设计过程中的Object Inspector中双击该属性,该属性的值将会在True和False之间来回切换,其他属性需要用户输入属性值或从下拉式列表框中选取属性值。所有的属性都可以通过程序代码进行设置。大多数属性可以独立地设置,只有DisplayFormat,EditFormat和EditMask是相互联系的。在设置它们的属性值时一定要确保相互协调。利用EditMask属性为字段设定编辑模式:为字段部件设置一定的EditMask属性值,当编辑输入该字段的字段值时,用户只能根据EditMask设定的
7、编辑模式进行编辑或输入字段值。在为EditMask属性设置属性值时可以用手动方式也可以用输入模式编辑器来完成,当为某字段部件设置EditMask属性时,双鼠标双击EditMask属性便可以打开输入模式编辑器(Input Mask Editor 。例如在为Customer.DB表的Phone字段设定编辑模式时,首先在Object Inspector中选取与Phone字段对应的Table1Phone字段对象,然后双击EditMask属性,打开输入模式编辑器。字段输入模式编辑器在字段输入模式编辑中可以选择一种输入模式,而且在TestInput编辑框中输入字段值进行检验。因为TStringField类
8、型的字段部件没有DisplayFormat属性,但是可以把EditMask属性当DisplayFormat属性使用。设定字段的显示和编辑格式:Delphi本身为某些类型的字段对象提供了设定其显示和编辑格式的例程,并且为字段部件的DisplayFormat和EditFormat属性指定了缺省值,例如对于与浮点型数值字段对应的TFloatField类型的字段部件,而且该字段部件的Currency属性设置为True 时,字段值1234.56的显示格式为$1234.56,编辑格式是1234.56。表15.7是Delphi提供了设置字段显示和编辑格式的例程。表15.7 字段格式例程例 程 名 运用的字段
9、对象FormatFloat TFloatField,TCurrencyFieldFormatDateTime TDateField,TTimeField,TDateTimeFieldFormatInteger TIntegerField,TSmallIntField,TWordField上述这些用于设定日期时间类型、数值型以及货币型字段的显示和编辑格式的例程,都是按国际上通行格式来设定相应类型字段的格式的,用户可以自己设置字段部件的DisplayFormat和EditFormat属性,来设定适合自己使用的格式,还可以为有关字段对象的OnGetText和OnSetText事件编写代码来设定字段的
10、显示和编辑格式。15.6.1.2 字段部件的事件及应用表15.8 字段部件的事件事件名 用 途OnChange 当字段部件的字段值发生改变时,触发该事件OnGetText 当字段部件获得字段值时,触发该事件OnSetText 当字段部件被设置字段值时,触发该事件OnValidata 当字值被修改或插入新的字段值时,对字段值进行有效性检验时,触发该事件用户想自己设定字段的显示和编辑格式时,可以编写OnGetText事件和OnSetText事件的处理过程,以达到设定字段的显示和编辑格式。15.6.1.3 字段部件的类型转换函数及使用字段部件具有一些内部函数用于转换字段值的类型,对于不同的字段类型,
11、这些转换函数的作用是不一样的,表15.9概括了不同类型的字段及转换函数的作用。表15.9 字段部件的转换函数字段类型 AsString AsInteger AsFloat AsDatetime AsBooleanTStringField 转换成 转换成整数 若能转换 日期 转换成布型Stringg型 (若能转换 则转换成 (若能转换TIntegerField TSmallField 字符型 整数型 浮点型 不允许 不允许转换TWordField TFloatField TCurrencyField 字符串型 舍入成整数 浮点型 不允许 不允许TBCDField TDateField TDate
12、TimeField 字符串 不允许 浮点数 日期型 不允许TTimeField TBooleanField 转换成Time 不允许 不允许 不允许 布尔型或False TBytesField TVarBytesField 字符串 不允许 不允许 不允许 不允许TBlobField TMemoField 二进制 不允许 不允许 不允许 不允许 TGraphilField 字段 上述这些转换函数可以在任何与字段部件有关的表达式中使用,只要是表15.9中允许进行转换的数据类型,这些转换函数其实是当做字段部件的属性来使用的,它们可以出现在赋值语句的两边。例如下面的程序代码是将字段部件TableMyFi
13、eld的字段值转变成字符串类型的数据,并将它赋给编辑框Edit1的Text属性:Edit1.Text := TableMyField.AsString;而下面的代码是进行相反的操作,它将编辑框部件Edit1的Text属性值以字符串的形式赋给字段TableMyField,TableMyField通过AsString接受字符串并将其转变成自身的数据类型。TableMyField.AsString :=Edit1.Text;15.6.1.4 字段部件的访问字段部件对应着数据库表中实际的字段,用户要读写数据库表中的字段值其实是通过访问相应的字段部件进行的。在前面的章节中我们介绍过在Delphi的数据库
14、应用程序中有两类字段部件:一类是利用字段编辑器创建的永久性字段部件;另一类是随着数据集部件被激活(被打开而动态生成的字段部件。对于永久性字段部件的访问可以直接调用使用字段部件的名字进行。假设我们在设计阶段利用字段编辑器创建了对应于Customer.DB表中Company字段的字段部件Table1Company,下面的代码访问Company字段的字段值,并将该字段值显示在编辑框部件Edit1中。Edit1.Text := Table1Company.Value;因为company字段是字符串类型的数据,它与Edit1中的数据类型相匹配的,因此可以直接使用字段部件的Value属性读取字段值。如果两
15、个变量的类型不匹配,则要使用表15.9中的转换函数进行字段值的读取。例如:要读取Customer.DB表中的CustNo字段的值并将它显示在编辑模框Edit1中,假设我们已用字段编辑器(Fields Editor创建了CustNo相应的字段部件,Table1CustNo,则程序代码如下:Edit1.Text := Table1CustNo.AsString;访问动态生成的字段部件相对要困难一些,因为动态生成的字段部件是没有自己的名字的,我们必须利用特殊的手段获得数据库表中各字段对应的字段部件,然后对字段进行访问。一般采用的方法有两种: 使用数据集部件的Fields属性 使用数据集部件的Fiel
16、dByName方法1. 使用数据集部件的Fields属性访问数据库表中各字段数据集部件的Fields属性是与数据集部件相连的数据库表中各个字段对应的动态字段部件的名字列表,因此我们可以通过Fields属性的下标(即索引号来访问各字段部件,从而达到访问数据库表中的各个字段,索引号从0开始,也就是说数据库表中第一个字段对应着Fields列表的第一行即0索引,第二个字段对应的Fields的索引号为1,以此类推。下面的例子是访问Customer.DB表中的第一个字段并在编辑框Edit1中显示其字段值。假设Table1与数据库表Customer.DB相连。Edit1.Text := Table1.Fie
17、lds0.AsString;下面的代码是将编辑框Edit1中的字符值赋给Customer.DB表中当前记录的第一个字段,以实现修改Customer.DB表中的字段值。Table1.Fields0.AsString := Edit1.Text;在数据集部件所拥有的方法中,有一个FieldByName方法,它是专门用于访问数据集部件中动态生成的字段部件的,调用FieldByName方法时,必须要把数据库表中的字段名作为参数传给FieldByName,调用该方法后便可以得到该字段所对应的字段部件,这样通过字段部件我们便可以读写表中相应的字段值了,用这种方法访问字段部件时,必须要知道数据库表中各个字段
18、的名字,否则是没有办法调用该方法的。还是基于上面的假设。下面是访问Customer.DB表中的CustNo字段的程序代码:Edit1.Text := Table1.FieldByName('CustNo'.AsString;Table1.FieldByName('CustNo'.AsString := Edit1.Text;在使用这两种方法访问动态生成的字段部件时,可以使用表15.9中的转换函数,在变量和字段值之间进行数据类型的转换。15.6.2 字段编辑器的使用字段编辑器(Fields Editor主要是用于创建永久性的字段部件。在前面的内容中我们知道,当TT
19、able或TQuery部件与数据库表相连接时,且TTable或TQuery部件被激活时(Active属性被设置成True或调用Open方法,Delphi便动态地为表中各字段创建相应的字段部件,字段部件中包含着相应字段的很多信息如字段值、字段值的显示、编辑格式等,有时我们在应用程序中为了更加方便、可靠地访问数据库表中各个字段,需要创建永久性的字段部件,这时我们必须要借助于字段编辑器来实现我们的设想。字段编辑器的主要功能如下: 创建永久性的字段部件 修改永久性字段的显示属性,如显示格式、显示宽度等 删除永久性的字段部件 增加新的永久性的字段部件 定义计算字段(不对应数据库表中实际的字段,字段值根据
20、表中其他字段的值计算得出15.6.2.1 打开字段编辑器为TTable和TQuery部件打开字段编辑有两种方法: 用鼠标左键双击TTable或TQuery部件 选择TTable部件或TQuery部件,然后单击鼠标右键,然后从弹出式菜单中选择 Fields Editor字段编辑器Fields Editor被打开以后,窗体的名字和数据集部件的名字会显示在窗口的标题上。字段编辑器Fields itor中的Fields列表框是用于显示已经创建的永久性字段部件的名字的。字段编辑器Fields Editor第一次被打开时,该列表框是空的,因为在此之前的字段部件都是动态生成的,只要Fields列表框中有字段
21、部件,那么与数据集部件相连的数据浏览部件中只显示Fields中列出的字段的字段值,在Fields列表框中,可以通过拖放字段部件的名字来改变相应的字段值在数据浏览部件中的显示顺序,如在TDBGrid部件中根据各字段在Fields列表框中的顺序显示各字段的值。在字段编辑器Fields Editor窗体上面的导航按钮是用来移动TTable或TQuery部件中的记录指针的,使用导航按钮可以将记录指针向前、向后移动,也可以移到第一条记录处或最后一条记录处。字段编辑器中的弹出式菜单15.6.2.2 增加字段部件字段编辑器Fields Editor中的Add Fields菜单项用于向数据集部件中增加字段部件
22、的,单击Add Fields菜单项时便会打开增加字段部件对话框,如图15.9所示。Available Fields列表框中显示出数据集部件TTable或TQuery中当前可以用于创建永久字段部件的全部的字段,也就是说Available Fields列表框中显示字段是数据库表中实际存在的字段,而且还没有为这些字段创建相应的永久性的字段部件,在缺省状态下所有的字段都被选择用于创建相应的永久性的字段部件,用鼠标单击其中的字段名可以有选择地创建其相应的永久性的字段部件,选择好有关的字段名之后,单击OK按钮便可以创建永久性的字段部件。字段编辑器的增加字段部件对话框15.6.2.3 删除字段部件用字段编辑
23、器Fields Editor为数据集部件创建好的字段部件都会显示在字段编辑器的Fields列表框中,如果用户认为其中的一些字段部件不合适或不再需要时,可以单击这些不需要的字段部件,然后单击鼠标右键弹出一佣弹出式菜单,从弹出式菜单中选择Delete菜单项,便可删除相应的字段部件,如果在弹出式菜单中单击Select All菜单项,然后选择Delete菜单项,这样会删除已创建好的所有的字段部件。某一个字段部件被删除以后,通过单击Add Fields菜单项可以重新创建,只是先前为该字段部件设定的一些属性将不复存在。15.6.2.4 定义新的字段部件字段编辑器Fields Editor中的弹出式菜单中N
24、ew Fields菜单项是用来为数据集部件TTable或TQuery创建用于显示目的的新的字段部件,我们可以用它来为数据库表中实际存在的字段创建新的字段部件(如改变字段的数据类型,使它的字段值被显示时不再需有关的类型转换,但是我们使用New Fields菜单项创建新的字段部件主要是创建计算字段。计算字段并不与数据库表中实际存在的字段对应,它的字段值是根据表中其它的字段值计算而来的,具体的计算表达式由用户为TTable部件或TQuery部件的OnCalCFields事件编写程序代码时决定。定义(创建计算字段的过程如下:1.单击字段编辑器中的New Fields菜单项,定义字段对话框如图15.11
25、所示。2.在FieldName编辑框中输入新字段部件的名字,或者从下拉式列表框中选择一个已存在的字段部件的名字。3.在FieldType列表框中为新字段部件选择一个字段类型。4.单击Calculated检查框,确认定义的新字段部件是计算字段。5.单击ok按钮,创建上述定义的计算字段部件,此时该字段部件的名字会自动地加入到字段编辑中的Fields列表框中。创建新的计算字段新的计算字段创建好了之后,它是没有任何字段值的,我们必须要编写相应的程序代码,根据数据库表中实际存在的字段的字段值为计算字段的宝定义字段值,我们为计算字段所在数据集部件的OnCalcFields事件编写代码来为计算字段赋值,其步
26、骤如下:15.7 TReport部件及其应用在一般的数据库应用程序中都包含着为最终用户提供输出报表的功能,使用Delphi开发数据库应用程序时,可以使用一个叫TReport的部件来执行报表功能的,报表的具体格式和内容是由Delphi提供的一个专用报表生成工具ReprotSmith创建的,它报表的具体格式和内容生成一个报表文件,然后为TReport部件设置相应的属性参数,由TReport部件执行报表功能。我们可以在设计阶段双击TReport部件,调用ReportSimith工具或者在Delphi程序组内双击ReportSmith图标来调用ReportSmith工具来创建一个报表文件,具体的操作步
27、骤和设计方法请参看ReportSimth工具的使用说明。我们在使用TReport部件执行报表功能时,要设置TReport部件的一些的一些属性,这些属性是:ReportName属性:说明报表文件的名字,就是用ReportSmith创建的报表文件。ReportDir属性:说明报表文件所在的途径名。PreView属性:这是一个布尔型属性。若它的值为True,那么在执行报表功能时,只是在屏幕上显示报表;若它的值为False,则报表内容将在缺省的打印机打印出来。AutoUnload属性:布尔型属性,它的值为True时,在执行完一个报表功能后,自动地从内存中卸出ReportSmith工具;它的值为Fals
28、e时,在运行完一个报表功能后,不从内存中卸出ReportSmith工具。一般情况下,如果应用程序只有一个报表或者只有较少的报表要输出时,应设置AutoUnload属性为True,如果应用程序一次要输出多个报表,那么要应设置AutoUnload属性为False。InitialValues属性:这是一个字符串类型的属性,它是说明报表文件中使用的变量,每一条说明一个变量。如:ReportVAR := Value;要详细了解创建和使用报表变量的过程请参看创建报表一节。TReport部件要真正执行报表功能以输出一个报表需要调用Run方法。如下所示:Report1.Run;TReport部件所具有的重要方法如表15.10所示。表15.10 TReport部件的方法方法 功 能Run 执行报表功能,输出报表RunMacro 发送一个宏命令给Reportimith工具Connect 预先连接
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年山东济南市12319热线服务中心招考聘用制(非事业编)工作管理单位笔试遴选500模拟题附带答案详解
- 2025年山东泰安市东平县引进高层次紧缺人才60人历年管理单位笔试遴选500模拟题附带答案详解
- 2025年山东枣庄滕州市属国企业招聘硕士研究生34人管理单位笔试遴选500模拟题附带答案详解
- 2025年山东晟润水务集团限公司招聘11人管理单位笔试遴选500模拟题附带答案详解
- 大班线描画课程设计房子
- 2025年山东德州经济技术开发区招聘专职网格员262人历年管理单位笔试遴选500模拟题附带答案详解
- 2025年山东山科控股集团限公司校园招聘128人管理单位笔试遴选500模拟题附带答案详解
- 2024年度专利权属及保密措施协议3篇
- 2024年新能源电动汽车销售及售后服务合同2篇
- 2024年图书馆教育培训图书采购合同协议3篇
- 器乐Ⅰ小提琴课程教学大纲
- 2022年广东省广州市白云区八年级上学期期末语文试卷
- 12二年级《跳跃:多种形式跳跃的练习方法》
- 服装厂安全生产责任书
- 医务科医疗管理架构图
- 屋面细石混凝土保护层施工方案及方法
- 2018-2019学年北京市西城区人教版六年级上册期末测试数学试卷
- 小学班主任工作总结PPT
- 起世经白话解-
- 螺杆式制冷压缩机操作规程完整
- 五金件成品检验报告
评论
0/150
提交评论