我可以在运行时覆盖设计时组件引用吗?

时间:2017-06-08 15:42:14

标签: delphi object

我在数据模块上使用TSQLConnection组件(connDT)仅将字段提取到TSQLDatasetTDatasetProvider和{{1}在设计时连接到我的测试数据库的三重奏。 在运行时,我需要使用连接到生产数据库的运行时对象实例(TClientDataset)来更改设计时TSQLConnectionconnDT)的对象实例。 我在数据模块的connRT事件中这样做了:

OnCreate

但是当我打开我的connDT := connRT;对象(trio)时,它仍然使用测试数据库(使用TClientDataset连接对象设置)。如何在运行时覆盖设计组件引用?

1 个答案:

答案 0 :(得分:1)

不要以这种方式覆盖设计时创建的对象引用。如果要在运行时更改数据库组件的连接,可以通过修改其SQLConnection属性或修改连接对象的参数(这是我更喜欢的)来完成。所以要么:

SQLDataSet1.SQLConnection := ConnRunTime;

或类似的东西:

ConnDesignTime.Params.Values['Database'] := 'MyDatabase';
ConnDesignTime.Params.Values['User_Name'] := 'UserLogin';
ConnDesignTime.Params.Values['Password'] := 'Password';
ConnDesignTime.Open;

还有其他方法,但上述方法非常简单。