datasource 的onStateChange事件小议

发现一怪事:

一Form,上一dbgrid,一dataSource,一adoquery,FormShow时adoquery.open

1.发现事件触发顺序是这样的:

dataSource的OnStateChange——Form的Create——Form的Show等

很奇怪,应该是FromCreate最先发生的才对

2.另有一些窗体是正常顺序:

FormCreate——FormShow——StateChange

 

经过对比,发现

是因为1中的窗体设计时,adoquery是open的

应该是窗体在create的时候,会把dataset close,所以引发了datasource的StateChange

而这时,还没有调用FormCreate,导致了StateChange事件比FormCreate还早触发

 

设计时关闭数据库连接,重新编译,就是2的状态了。

 

做个记录,嘻嘻

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据