红鱼儿

LifeCycles属性

不记得是哪一个版本,增加了TFieldLifeCycle = (lcAutomatic,lcPersistent ),字面意思是“字段生命周期”,

lcAutomatic:表示TField是运行期自动生成的

lcPersistent:表示TField对象是持久性的

然后,为字段TField增加了LifeCycles属性,同样,TFields也增加了LifeCycles属性。

在docwiki中,为TField是这样写的:

指定该字段是动态生成的,还是持久化的,

为TFields是这样写的:

使用LifeCycles指定TFields是否含有动态生成的和/或持久化的字段。

lcAutomatic如果TFields中至少有一个自动字段,则LifeCycles包含该值。

lcPersistent如果TFields中至少有一个持久化字段,则LifeCycles包含该值。

不得不说,官方文档写的没毛病,但实践中,怎么理解并使用这个LifeCycles呢?

当我们在设计期,在字段编辑器中为一个TDataSet建立好字段,那运行的时候,这些字段的LifeCycles属性值为lcPersistent,当你关闭TDataSet,这些字段对象不会被释放。

如果设计期不建立字段,而是在运行期建立的字段,那么LifeCycle值为lcAutomatic,当Close关闭数据集时,字段对象被释放。可能你要问,什么样的TDataSet是在运行期建立字段呢?执行查询的数据集,比如,ADOQuery,kbmMWClientQuery。

 

posted on 2020-10-09 14:54  红鱼儿  阅读(427)  评论(1编辑  收藏  举报