尝试以Bpl的方式多人开发一个项目
DELPHI7+DBEXPRESS+SQL2000我所负责的是系统框架,子功能模块以BPL的方式多人开发,
现在想所有模块共用一个SqlConnection连到SQL服务器中
并能保证无论是设计期还是运行期都可以很好地运作。我现在的做法是将数据链接做在一公用Bpl的DataModule中,其它模块需要数据链接的就将包加入其中,但在设计时却需要将公用包打开,并先激活DataModul,子模块的数据控件才能找到公用链接,所以感觉不是很方便。有哪位高手可以给个更好的方法,谢!
DELPHI7+DBEXPRESS+SQL2000我所负责的是系统框架,子功能模块以BPL的方式多人开发,
现在想所有模块共用一个SqlConnection连到SQL服务器中
并能保证无论是设计期还是运行期都可以很好地运作。我现在的做法是将数据链接做在一公用Bpl的DataModule中,其它模块需要数据链接的就将包加入其中,但在设计时却需要将公用包打开,并先激活DataModul,子模块的数据控件才能找到公用链接,所以感觉不是很方便。有哪位高手可以给个更好的方法,谢!
你最好是设置好导出文件路径
.EXE和.BPL在一个路径
.DCP也导出来
.DCP也导出来用相对路径设置!
.DCP包含了编译文件信息
不用激活其链接文件
所以,每一个子模块包的主窗口都将NEW->OTHER里选择此FORM并继承下来,再把公用包加入其中后编译与运行都没问题,只是在设计的时候却需要同时将公用包的DPK打开,否则无法编辑模块中的Form,错误为:"找不到父类"。高手们,帮帮忙吧,只要解决,我立马加分。再谢!
不过,我认为你这样做不好:1、运行速度很慢;2、没有达到设计包的目的,没有体现出
包的优势;
我这里用一个公用DataModul的意思是想降低SQL服务器的负荷,因为每一个Module都建一个到相同数据库的SqlConnection的话,总是不明智的。
我现行的做法,运行是没问题,只是设计时不太方便.
TO gencan(无敌) :
你可能没明白我的意思.TO jxc163(一水寒):
非常想参考下,[email protected] 不胜感激!
void __fastcall SetRemoteServer(TSocketConnection *SocketCon,TComponent *ParentComponent)
{
TComponent *Temp;
TClientDataSet *tmpDataSet;
for(int i=0;i<ParentComponent->ComponentCount;i++)
{
Temp=ParentComponent->Components[i];
if (dynamic_cast<TClientDataSet *>(Temp) != NULL)
{
tmpDataSet=(TClientDataSet *)Temp;
tmpDataSet->RemoteServer=SocketCon;
}
}
}
只是为了设计方便,但程序代码必须还是按发布时的写就行了;
我做的项目就是这样做的,很方便;
app(main,首先创建commonDM,然后依次创建其他功能块)
commonDM.bpl(adoconnontion,commonForm)
module1.bpl(静态引入connection,发布时删掉,里面的所有连接用commonDM.bpl中的连)
module2.bpl(静态引入connection,发布时删掉,里面的所有连接用commonDM.bpl中的连)
module3.bpl(静态引入connection,发布时删掉,里面的所有连接用commonDM.bpl中的连)
下面的程序员写的时候就从模板上继承,很方便的!无论是在设计期,还是运行期都运行良好!