东西作完了,想作一个类似于PHOTOSHOP的那样的动态启动画面,可是尝试了几次效果都不理想,大家是怎么作的呀?
我尝试过的方法:
1。通过全局变量更新启动窗体上的LABEL。
2。通过计时器来更新LABEL.(假更新)。
发现在启动窗体好长时间之后才能更新,而这一段时间程序没有做什么耗时的动作。
我的代码如下:
begin
CreateMutex(nil, True, 'Tform1');
  if GetLastError = ERROR_ALREADY_EXISTS then
  begin
  MessageBox(0, '程序正在运行!', '警告!' ,MB_ICONERROR);
  Halt;
  end;
  Application.Initialize;
  qd:=Tqd.Create(application);
  qd.Show;
  qd.Update;
  Application.CreateForm(Ttietongdb, tietongdb);
//数据模块窗体,其中有qd.label1.caption:='正在连接数据库';qd.update;语句,但不显示
  qd.AlphaBlend:=true;
  qd.Update;
  Application.CreateForm(TForm1, Form1);
//主窗体,同上,这个里面的更新信息显示
   while qd.AlphaBlendValue > 15 do
    qd.AlphaBlendValue := qd.AlphaBlendValue - 5; 
  qd.Hide;
  qd.Free;
  Application.Run;
end.

解决方案 »

  1.   

    procedure TfrmQdck.Image1Click(Sender: TObject);
    begin
      if assigned(frmQdck) then
      try
        FrmQdck.Close;
      except
      end;
    end;procedure TfrmQdck.Timer1Timer(Sender: TObject);
    begin
      if label1.Left = panel1.Width then
        label1.Left := 0;
      label1.Left := label1.Left + 2;
      refresh;
    end;
      

  2.   

    以下是我的启动窗体程序:
    program Project1;uses
      Forms,
      windows,
      Unit1 in 'Unit1.pas' {FormMain},
      Unit2 in 'Unit2.pas' {FormSplash};{$R *.RES}begin
      FormSplash:=TFormSplash.Create(Application);//FormSplash是启动窗体
      FormSplash.Show;
      FormSplash.Update;
      Application.Initialize;
      Application.CreateForm(TFormMain, FormMain);
      Sleep(2000);//如果程序小则加延时函数,否则最好不要
      FormSplash.Hide;
      FormSplash.Free;
      Application.Run;end
      

  3.   

    记得用 Application .ProcessMessages ;
      

  4.   

    我想要的是那种想PHOTOSHOP一样的能够动态显示加载进度信息的启动窗体!
    在启动画面中放TIMER的方法好像不可以!
      

  5.   

    坚定的支持tjff2000(fengyun)的建议。记得
    FormSplash.Hide;
    FormSplash.Free;free以前先hide。可以避免FormSplash闪烁。