一个数据库程序,在程序最初启动时连接数据库需要花几秒钟时间,双击程序后,主窗口一直没有打开,给人的感觉非常不好,想在数据库连接期间显示一个splash窗口,当数据库连接成功后,关闭splash窗口,并弹出主窗口!步骤应该是这样的:
1. 开始连接数据库;
2. 弹出splash窗口;
3. 连接成功后,splash窗口关闭,主窗口弹出;否则整个程序退出!// .dpr文件
begin
  frmSplash := TfrmSplash.Create(Application);
  frmSplash.FormStyle := fsStayOnTop;
  frmSplash.Show;
  frmSplash.Update;
  while frmSplash.Timer1.Enabled do
    Application.ProcessMessages;
  Application.Initialize;
  Application.CreateForm(TDataModule1, DataModule1);
  Application.CreateForm(TfrmMain, frmMain);
  Application.Run;
end.// xxSplash.pas// Timer1.Interval = 5000;procedure TfrmSplash.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled:=false;
  Close;
end;如果像上面代码一样,则必须要等到5秒过后程序才会去连接数据库,还是有一个等待的时间,
该怎样让连接数据库和Splash窗口同时进行,成功后告知Splash窗口退出?谢谢!

解决方案 »

  1.   

     frmSplash.Update;
     while frmSplash.Timer1.Enabled do
       Application.ProcessMessages;
    这样写肯定得等你的Timer1的时间到了才去连接数据库呀,这样的话那你的Flash画面就没有意义了。先启去Flash画面,然后直接进行数据库连接,连接成功后再关闭你的Flash画面。
      

  2.   

    主窗口该如何关闭splash窗口?
      

  3.   

    CreateForm时,应该就有数据连接动作了吧,因为是同步的,所以等到连接后,才会先下执行,这是freeandnil刚才那个flash窗口