clientdataset--DataSetProvider---uniquery
按触发顺序分类
clientdataset1.open时:uniquery.AfterOpen--DBgrid1.OnDrawColumnCell;
clientdataset1.Insert
clientdataset1.Appen
clientdataset1.insertrecord,
clientdataset1.appendrecord时:
clientdataset1.BeforeInsert---clientdataset1.OnNewRecord
--clientdataset.fields[i] OnSetText->clientdataset.fields[i]OnValidate->clientdataset.fields[i]OnChange--clientdataset1.BeforePost---clientdataset.post---clientdataset1.AfterPost
--显示界面(不触发dbgrid1.columns[i].OnUpdate)
修改dbgrid1列值时:
dbgrid1.column[i].OnUpdateData----
clientdataset.fields[i]OnSetText>clientdataset.fields[i]OnValidate->clientdataset.fields[i]OnChange
---dbgrid刷新为新值--dbgrid1.ColExit--dbgrid1.ColEnter
总结:cds的事件分前后两类;
TField的事件触发顺序:
显示时触发:OnGetText
编辑时触发:OnSetText->OnValidate->OnChange
(1)OnGetText事件是访问DisplayText或Text时触发。如果数据库中存储的值和要显示给用户看的值不一样,如数据库中存储的是bool型的值,要显示给用户“真”或“假”,可以在这个事件里进行处理。
(2)OnSetText事件是设置字段的值时触发。
(3)OnValidate事件是字段的值写入记录缓冲区前触发。可以在这个事件里对字段的值进行验证。
(4)OnChange事件是字段的值写入记录缓冲区后触发。这个事件经常用到
注意
clientdataset是行提交的:即单光标换行时才发生post方法.这时候发生的顺序是:clientdataset.BeforePost--clientdataset.post--clientdataset.AfterPost--dbgrid1.ColExit--dbgrid1.ColEnter