我新近做了一个数据感知组件,要用到 TADOConnection 的实例去连接数据库,使用一个 Boolean 属性去打开连接(像 TTable 一样要先设置 Datasource 属性及 TableName 属性之后才能设置 Active 属性为 True ),在使用属性编辑器设置这些属性的时候可以正确无误地连接数据库,但如果我用 F9 运行程序时发现 TADOConnection 属性(姑且叫"对象属性")的赋值时间总是晚于 Boolean 属性(姑且叫"非对象属性")的赋值时间,也就是说对象属性总是在其它非对象属性被赋值之后才被赋值。请问众高手,有没有一个办法使对象属性先被赋值(或者那个对象先被构造然后在非对象属性被赋值之前将其赋值,再或者有什么办法使非对象的属性被延后赋值)。(不要告诉我先在非对象属性被赋值时记录一个状态,再到对象被赋值激活这个状态,因为我也会)

解决方案 »

  1.   

    经过测试,我发现改变属性的声明顺序对同一种类型的属性(即如果同是"对象属性”或者同是“非对象属性”)是可行的,但如果一个属性是"对象属性”而另个属性是"非对象属性”,则它总是先给所有的"非对象属性”赋值,然后再给所有的"对象属性”赋值, 比如这样声明:property AObjectA : TTable read FTable write FTable ;
    property NotAObjectA : int read FNotAObjectA write FNotAObjectA ;
    property NotAObjectB : real read FNotAObjectB write FNotAObjectB ;
    property AObjectB : TQuery read FQuery write FQuery ;赋值的顺序应该是:NotAObjectA 
    NotAObjectB AObjectA 
    AObjectB