Delphi的DataSource事件
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField); //数据源记录移动触发
begin
end;
procedure TForm1.DataSource1StateChange(Sender: TObject); //时刻监视着数据源的状态
var s:String;
begin
// TDataSetState = (dsInactive, dsBrowse, dsEdit, dsInsert, dsSetKey,
// dsCalcFields, dsFilter, dsNewValue, dsOldValue, dsCurValue, dsBlockRead,
// dsInternalCalc, dsOpening);
Case DataSource1.State of
dsInactive: s:=’Inactive’; //数据集被关闭
dsBrowse: s:=’Browse’; //浏览模式
dsEdit: s:=’Edit’; //编辑模式,意味着Edit方法已被调用,而编辑后的数据尚未被提交
dsInsert: s:=’Insert’; //插入模式,即Insert被调用,但变化还没有提交
dsSetKey: s:=’SetKey’; //设置键值模式,意味着SetKey被调用,而GotoKey尚未被调用
dsCalcFields: s:=’CalcFields’; //OnCalcFields事件已发生,对记录值的计算正在进行中
dsFilter: s:=’Filter’; //数据集正在处理一个记录过滤器、查找字段或其他需要用到过滤器的操作
dsNewValue: s:=’NewValue’; //数据集处于NewValue属性被访问的临时状态
dsOldValue: s:=’OldValue’; //数据集处于OldValue属性被访问的临时状态
dsCurValue: s:=’CurValue’; //数据集处于CurValue属性被访问的临时状态
dsBlockRead: s:=’BlockRead’; //数据正被写入缓冲区,此时数据库表中指针的移动并不触发数据感知组件的更新和事件的发生
dsInternalCalc: s:=’InternalCalc’; //一个字段值正在被计算,以供一个有fkInterternalCalc类型的Fieldkind属性的字段使用
dsOpening: s:=’Opening’; //数据集处于正在打开状态但是还没有结束,这种状态发生在数据集被异步打开时
End;
Label1.Caption:=s;
end;