15.3.6 数据集部件的事件
数据集部件TTable或TQuery具有很多的事件。为这些事件编写相应的程序代码可以进行有效性验证、计算可计算字段的值、确认对数据库表的多种操作等等。这些事件及其描述如表15.4所示。
表15.4 数据集部件常用的事件
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
事 件 描 述
───────────────────────────────────
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/delphi/)BeforeOpen,Afteropen 在数据集部件被打开之前/之后被触发
───────────────────────────────────
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/delphi/)BeforeClose,Afterclose 在数据集部件被关闭之前/之后被触发
───────────────────────────────────
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/delphi/)BeforeInsert,AfterInsert 在数据集部件进入插入状态之前/之后被触发
───────────────────────────────────
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/delphi/)BeforeEdit,AfterEdit 在数据集部件被编辑之前/之后被触发
───────────────────────────────────
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/delphi/)BeforePost,AfterPost 在数据集部件投寄被修改的记录之前/之后被触发
───────────────────────────────────
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/delphi/)BeforeCancel,AfterCancel 在数据集部件取消前一步操作之前/之后被触发
───────────────────────────────────
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/delphi/)BeforeDelete,AfterDelete 在数据集部件删除当前记录之前/之后被触发
───────────────────────────────────
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/delphi/)OnNewRecord 当建立一条新记录时被触发
───────────────────────────────────
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/delphi/)OnCalcFields 当为表中的计算字段计算字段值时被触发
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
15.4 TTable部件及应用
在前一节里我们介绍了数据集部件TTable 和TQuery 的共同的一些属性和方法。TTable部件是Delphi数据库编程中要经常使用的最重要的部件之一,它是数据库应用程序访问数据库时必须使用的数据集部件之一,在这一节里,我们重点介绍TTable部件特有的属性和方法,TTable部件所有的属性、方法和事件都可以在联机帮助中查到。
15.4.1 TTabel部件主要的属性
DatabaseName属性和TableName属性:
DatabaseName属性是说明数据库应用程序所操作的数据库的名字,它可以是由BDE定义的数据库的别名、显式说明的数据库文件所在的磁盘路径或者由TDatabase部件定义的一个数据库名。DatabaseName属性常常是一个由BDE定义的数据库的别名。使用由BDE定义的数据库的别名代替数据库实际所在的路径和名字,好处是当实际的数据库存放的位置发生变化时,只需利用BDE简单地设置一下该数据库的别名,而数据库应用程序无需修改。有关BDE的使用请参看BDE的设置应用。TabelName属性用以说明当前TTable部件所连接的实际的数据库表。这两个属性一般都在设计阶段指定,当然在程序运行过程中也可以设置,但是要修改这两个属性时,必须要在TTabel的Active属性为False时进行,当TTable的Active属性为True时,这两个属性是不能被修改和设置的。
TableType属性:
该属性说明与TTable部件相连接的数据库表的类型。当TableType属性设置成Default时,该属性所说明的数据库表的类型由数据库文件的扩展名决定。
● 若数据库文件的扩展名为.DB或没有扩展名,表的类型是Paradox表
● 若数据库文件的扩展名为.DBF时,表的类型是dBASE表
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/delphi/)● 若数据库文件的扩展名为.TXT时,表的类型是ASCII表
如果TableType属性不设定为Default,那么与TTable 部件相连的数据库表的类型由TableType中的设置的值决定,不用考虑数据库文件的扩展名。
KeyExclusive属性:
该属性的一个作用是说明在数据库表中查找记录时,将记录移到与查找值相匹配的记录处还是将记录指针移到与查找值相匹配的记录后面一条记录处。该属性是布尔型变量,当它的值为False时(缺省情况下为False),将记录指针移到相匹配的记录处,为True时,将记录指针移到相匹配记录的后面一条记录处。该属性另一个作用是在表中指定检索范围时,用来说明是否包括满足过滤条件的边界记录。当KeyExclusive的值为False时,检索范围包括边界记录,否则不包括边界记录,有关详细的操作请参看“限定表中记录的检索范围”。
IndexFields属性和IndexFieldsCount属性:
IndexFields的属性值是数据库表中字段名列表,它包含与TTable部件相连的数据库表中的全部索引字希。IndexFieldsCount属性说明表中索引字段的个数。这两个属性值都是只读的,只有在程序运行过程中可用。
IndexName属性和IndexFieldNames属性:
IndexName属性中存