AutoEdit属性:这是一个布尔型变量,它用于说明是否将与TDataSource部件相连的数据集置于编辑状态。当AutoEdit的值为True时,应用程序运行时,与TDataSource相连的数据集部件自动地被设置成编辑状态,当用户在与TDataSource部件相连的数据浏览部件中输入新的值时,数据集部件中的记录也随之改变。如果AutoEdit的值为False,用户想通过数据浏览部件或程序修改数据集中的记录,必须要调用数据集部件的Edit方法,将其置为编辑状态之后才能够进行。
15.5.2 TDataSource部件的事件
TDataSource部件具有三个事件:
● OnDataChange事件
● OnStateChange
● OnUpdataData
OnDataChange事件:当与TDataSource相连的数据集中的记录指针的位置发生改变时,该事件就被触发,也就是说当程序调用数据集部件的Next、Previous、Insert、Append等方法导致记录指针的位置发生改变时,便会触发该事件。该事件一般用于保持应用中多个部件之间的同步。
OnUpdataData事件:当数据集部件中当前记录将要被修改时,触发该事件。例如在程序调用post方法之后但在修改后的数据记录真正被写回磁盘中的数据库文件之前触发该事件,在应用中使用非数据浏览部件时要它与数据集保持同步时常使用该事件进行相关的处理。
OnStateChange事件:当与TDataSource部件相连的数据集部件的状态发生改变时, 便触发该事件。因为数据集部件的State属性标明了数据集部件当前所处的状态,当数据集的状态发生变化时,使用该事件进行有关的处理是很有用的,在一个具体的应用中, 数据集部件的状态常常是频繁地变化的,为了跟踪数据集部件的状态变化, 可以用下面例子中的程序代码将数据集部件当前的状态显示在一个标签上:
TForm1.DataSource1OnStateChange(Sender : Tobject);
var
S : String;
begin
Case Table1,State of
dsInactive : S := 'Inactive';
dsBrowse : S := 'Browse';
dsEdit : S := 'Edit';
dsInsert : S := 'SetKey';
dsSetKey : S := 'SetKey';
end;
Label1.Caption := S;
end;
类似地我们也可以通过检测数据集部件的状态来控制有关的按钮和菜单项是否有效。 例如:在一个应用窗体中有一个InsertBtn按钮,用于控制向数据集部件table1对应的数据库表中插入记录;还有一个CancelBtn按钮用于控制是否取消用户对当前记录的修改或插入新记录。下面的程序代码根据Table1的状态来控制这两个按钮的功能(是否有效,在窗体是否变灰暗)。
Form1.DataSource1OnStateChange(Sender : Tobject);
begin
InsertBtn.Enabled := (Table1.State = dsBrowse);
CancelBtn.Enabled := Table1.State in [dsInsert,dsEdit,dsSetKey]
end;
上面的代码中,当Table1处于浏览状态(Browse状态时), 用户是不能够向数据库表中插入新记录的,此时InsertBtn按钮将变灰暗即无效。当Table1不处于Browse状态时,InsertBtn按钮有效,用户是可以向表中插入新记录。同理,只有当Table1处于特入状态(Insert状态)或编辑状态(Edit状态)或查找状态(SetKey状态)时,CancelBtn按钮才有效,也即用户可以取消当前插入的记录、修改当前的记录以及查找到的结果等。
15.6 字段部件和字段编辑器的使用
字段部件有时又称字段对象它对应着数据库表中的列即字段,字段对象是不可见的部件,在Delphi中有两种方式创建字段部件:
①在应用程序运行过程中,随着数据集部件被激活,对应于数据库表中每一列的字段部件便动态地被创建。
②在设计过程中,程序设计人员利用字段编辑器(Fields Editor)可以创建永久性的字段部件,即使字段对象对应的数据库表的结构发生了变化时,这些字段部件也不会发生变化。
既然字段部件是对应于数据库表中的各个字段的,而数据库表中的字段有多种数据类型,所以字段部件相应也有多种类型,字段部件的类型与数据库表中的字段的数据类型的对应关系如表15.5所示。
表15.5 字段部件的类型
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
字段部件的类型 对应的数据类型
────────────────────────────
TStringField 字符串类型的字段
TSmallIntField 短整数类型的字段 -32768-32767
TIntegerField 整数类型的字段
TWordField 正整数类型的字段0-65535
TBooleanField 布尔型字段
TFloatField 浮点数类型的字段
TCurrenCyField 货币型字段
TDataField 日期型
TTimeField 时间型
TBCDField 小数位数固定的浮点数
TDataTimeField 日期时间型字段
━━━━━━━━━━━━━━━━━━━━━━━━━━━
我们在本书中只介绍一些常见类型的字段部件的使用,其他类型字段部件的使用可以参看联机帮助文件。
上一篇: Delphi 数据访问部件的应用及编程(三)
下一篇: Delphi 数据浏览部件的应用及编程(一)
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




