begin
Application.Initialize;
Application.Title := '综合业务系统';
frmSplash := TfrmSplash.create(application);
frmSplash.Show;
frmSplash.Update; Application.CreateForm(Tdm_xcx, dm_xcx); Application.CreateForm(TfrmMain, frmMain); //有applcation.terminate
Application.CreateForm(TfrmAbout, frmAbout);
Application.CreateForm(TfrmShqz, frmShqz);
Application.CreateForm(TfrmTdmzTjRtp, frmTdmzTjRtp);
frmSplash.hide;
frmSplash.free;
Application.Run;
end;
Application.Initialize;
Application.Title := '综合业务系统';
frmSplash := TfrmSplash.create(application);
frmSplash.Show;
frmSplash.Update; Application.CreateForm(Tdm_xcx, dm_xcx); Application.CreateForm(TfrmMain, frmMain); //有applcation.terminate
Application.CreateForm(TfrmAbout, frmAbout);
Application.CreateForm(TfrmShqz, frmShqz);
Application.CreateForm(TfrmTdmzTjRtp, frmTdmzTjRtp);
frmSplash.hide;
frmSplash.free;
Application.Run;
end;
不行了(当然appcation最后是会终止的),还是会执行后续的createform,才终止.关键是我的后续的dm有数据库的连接,耗时较长,等到她们都创建完了,才终止applcation.这样用户会觉得等待太久了!!!
Application.CreateForm(Tfrminfo, frminfo);
这两句可以放到主程序中,如果你想调用时再写上
赫赫
begin
frmlogo:=tfrmlogo.create(application); //欢迎界面
frmlogo.Show;
frmlogo.Update;
Application.Initialize;
Application.CreateForm(Tfrmmain, frmmain);---->在frmmain中的create事件中
//有applcation.terminate
Application.CreateForm(Tdm, dm); //如何不执行以下两句的窗体创建
Application.CreateForm(Tfrminfo, frminfo);
frmlogo.Close; //但是这个释放语句还是要执行的
frmlogo.Free; //释放欢迎界面
application.Run;
end.
=======================
如果在进入程序前要操作数据库的话,建议选执行 Application.CreateForm(Tdm, dm);再执行Application.CreateForm(Tfrmmain, frmmain);
这样即可以在主窗体中使用数据窗体,也可以在想终止重序的时候先释放它。
不过从你的思想来看,你的总体设计比较乱,一般情况下,可以用下面的结构。
1、对于先于主窗口显示的窗口,不要使用Application.CreateForm,而是使用TForm本身的Create方法;
2、如果要做到数据库中的用户登录,可以做一个login窗体,先创建于主窗体而慢于数据模块;当验证通过之后再创建主窗体,但是要记住一点,创建主窗体的语句一定要放在条件语句内,否则它还是会被执行的。
3、如果实在想强行中止程序,可以使用halt来终止,但是这样有一个缺点,就是无法自动释放程序中创建的内存,所以,在halt之前最后保证所的的内存先释放。
Application.Initialize;
Application.CreateForm(Tdm, dm);//this is way
frmlogo:=tfrmlogo.create(application); //欢迎界面
frmlogo.Show;
frmlogo.Update;
Application.CreateForm(Tfrmmain, frmmain);---->在frmmain中的create事件中 //有applcation.terminate
Application.CreateForm(Tfrminfo, frminfo);
begin
frmlogo:=tfrmlogo.create(application); //欢迎界面
frmlogo.Show;
frmlogo.Update;
Application.Initialize;
Application.CreateForm(Tfrmmain, frmmain);---->在frmmain中的create事件中
if 条件=true then
begin
applcation.terminate //applcation.terminate
goto 1;
end;
Application.CreateForm(Tdm, dm); //如何不执行以下两句的窗体创建
Application.CreateForm(Tfrminfo, frminfo);
1: frmlogo.Close; //但是这个释放语句还是要执行的
frmlogo.Free; //释放欢迎界面
application.Run;
end.
你何必一定要把Tdm,Tfrminfo设置为自创建呢?
你完全可以在Tfrmmain的create事件中条件满足时创建啊^-^