TDataSource部件的事件
TDataSource部件具有三个事件
● OnDataChange事件
● OnStateChange
● OnUpdataData
OnDataChange事件当与TDataSource相连的数据集中的记录指针的位置发生改变时该事件就被触发也就是说当程序调用数据集部件的NextPreviousInsertAppend等方法导致记录指针的位置发生改变时便会触发该事件该事件一般用于保持应用中多个部件之间的同步
OnUpdataData事件当数据集部件中当前记录将要被修改时触发该事件例如在程序调用post方法之后但在修改后的数据记录真正被写回磁盘中的数据库文件之前触发该事件在应用中使用非数据浏览部件时要它与数据集保持同步时常使用该事件进行相关的处理
OnStateChange事件当与TDataSource部件相连的数据集部件的状态发生改变时便触发该事件因为数据集部件的State属性标明了数据集部件当前所处的状态当数据集的状态发生变化时使用该事件进行有关的处理是很有用的在一个具体的应用中数据集部件的状态常常是频繁地变化的为了跟蹤数据集部件的状态变化可以用下面例子中的程序代码将数据集部件当前的状态显示在一个标签上
TFormDataSourceOnStateChange(Sender : Tobject)
var
S : String;
begin
Case TableState of
dsInactive : S := Inactive;
dsBrowse : S := Browse;
dsEdit : S := Edit;
dsInsert : S := SetKey;
dsSetKey : S := SetKey;
end;
LabelCaption := S;
end;
类似地我们也可以通过检测数据集部件的状态来控制有关的按钮和菜单项是否有效例如在一个应用窗体中有一个InsertBtn按钮用于控制向数据集部件table对应的数据库表中插入记录还有一个CancelBtn按钮用于控制是否取消用户对当前记录的修改或插入新记录下面的程序代码根据Table的状态来控制这两个按钮的功能(是否有效在窗体是否变灰暗)
FormDataSourceOnStateChange(Sender : Tobject)
begin
InsertBtnEnabled := (TableState = dsBrowse)
CancelBtnEnabled := TableState in [dsInsertdsEditdsSetKey]
end;
上面的代码中当Table处于浏览状态(Browse状态时)用户是不能够向数据库表中插入新记录的此时InsertBtn按钮将变灰暗即无效当Table不处于Browse状态时InsertBtn按钮有效用户是可以向表中插入新记录同理只有当Table处于特入状态(Insert状态)或编辑状态(Edit状态)或查找状态(SetKey状态)时CancelBtn按钮才有效也即用户可以取消当前插入的记录修改当前的记录以及查找到的结果等
字段部件和字段编辑器的使用
字段部件有时又称字段对象它对应着数据库表中的列即字段字段对象是不可见的部件在Delphi中有两种方式创建字段部件
①在应用程序运行过程中随着数据集部件被激活对应于数据库表中每一列的字段部件便动态地被创建
②在设计过程中程序设计人员利用字段编辑器(Fields Editor)可以创建永久性的字段部件即使字段对象对应的数据库表的结构发生了变化时这些字段部件也不会发生变化
既然字段部件是对应于数据库表中的各个字段的而数据库表中的字段有多种数据类型所以字段部件相应也有多种类型字段部件的类型与数据库表中的字段的数据类型的对应关系如表所示
表 字段部件的类型
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
字段部件的类型 对应的数据类型
────────────────────────────
TStringField 字符串类型的字段
TSmallIntField 短整数类型的字段
TIntegerField 整数类型的字段
TWordField 正整数类型的字段
TBooleanField 布尔型字段
TFloatField 浮点数类型的字段
TCurrenCyField 货币型字段
TDataField 日期型
TTimeField 时间型
TBCDField 小数位数固定的浮点数
TDataTimeField 日期时间型字段
━━━━━━━━━━━━━━━━━━━━━━━━━━━
我们在本书中只介绍一些常见类型的字段部件的使用其他类型字段部件的使用可以参看联机帮助文件
返回目录DELPHI基础教程
编辑推荐
Java程序设计培训视频教程
JEE高级框架实战培训视频教程
Visual C++音频/视频技术开发与实战
Oracle索引技术
ORACLEG数据库开发优化指南
Java程序性能优化让你的Java程序更快更稳定
C嵌入式编程设计模式
Android游戏开发实践指南
[] [] [] []