D de410 Unregistered / Unconfirmed GUEST, unregistred user! 2009-05-13 #2 这样做比较复杂,你不如做一个公共的数据库连接dll,然后,其他dll调用此连接dll~~~
Z znxia Unregistered / Unconfirmed GUEST, unregistred user! 2009-05-13 #3 1>主程序通过一个DLL函数将dm转化为int传递给DLL;例如: SetDataModule( integer(DataModule1) );2>DLL中将该变量赋值给一个全局变量 procedure SetDataModule( DM:Integer ); begin globalDm := TDataModule(DM); end;3>使用dm中的变量ADOQuery1时,如下 TADOQuery( globalDm.FindComponent('ADOQuery1') )
1>主程序通过一个DLL函数将dm转化为int传递给DLL;例如: SetDataModule( integer(DataModule1) );2>DLL中将该变量赋值给一个全局变量 procedure SetDataModule( DM:Integer ); begin globalDm := TDataModule(DM); end;3>使用dm中的变量ADOQuery1时,如下 TADOQuery( globalDm.FindComponent('ADOQuery1') )
G guqiu Unregistered / Unconfirmed GUEST, unregistred user! 2009-05-13 #4 我觉得只传Connection比较好,其他组件在DLL声明就行了。
J jmlwz Unregistered / Unconfirmed GUEST, unregistred user! 2009-05-13 #5 在DLL创建DM时报错,(A component named DMalready exists),主程序也同样使用DM
Z zhhj0534 Unregistered / Unconfirmed GUEST, unregistred user! 2009-06-13 #6 在DataModule后面的end.前加上下面代码:initialization CoInitialize(nil); frmDataModule:= TfrmDataModule.Create(nil);finalization frmDataModule.Free; CounInITialize();
在DataModule后面的end.前加上下面代码:initialization CoInitialize(nil); frmDataModule:= TfrmDataModule.Create(nil);finalization frmDataModule.Free; CounInITialize();
X xnnfan126 Unregistered / Unconfirmed GUEST, unregistred user! 2009-06-13 #9 在DLL的入口地址中留一个ConnectionString。在主程序引用DLL时,将DM中的ADOQuery.ConnectionString赋与DLL就可以了