我做了一个程,,  启动首先是 欢迎界面 , 我在工程的 unit 里写了停留五秒钟,,,  然后就是登陆窗口,  可是现在欢迎界面完了后,  要过十几秒时间才出登陆窗口 ,  有什么办法让欢迎界面一过登陆窗口马上就出来,,,  哪怕是把这十几秒时间  让它断续显示欢迎界面  , 不然中间这段时间什么都没有,,别人还以为是死机了。

解决方案 »

  1.   

    楼上的,一个开始界面就用多线程,是否夸张了一点。
    1。在欢迎界面上放个动画(GIF)。
    2。能动态创建的东西,就动态创建
    3。不要停留五秒钟(你都觉得慢了,还停留什么?)
    4。顺序应该是这样的。
       创建欢迎界面,显示欢迎界面,创建登陆界面(延时放在登陆界面的create里),
      释放欢迎界面,显示登陆界面。
      

  2.   

    form的onshow实践中把欢迎界面close
      

  3.   

    看看我的源代码,我用得没问题//在主窗体中创建欢迎窗体,这里是主窗体
    procedure TFormMain.FormCreate(Sender: TObject);
    begin
       ...
       ... 
      
       ShowStartForm();  end;//这是显示欢迎窗体的过程
    Procedure TFormMain.ShowStartForm();
    Begin
      FormStart:=TFormStart.Create(Self);
      With FormStart Do
      Begin
        ShowModal;
        Free;
      End;
    End;
    //下面是欢迎窗体的原码(需要用到定时器)
    procedure TFormStart.FormCreate(Sender: TObject); //确定显示时间并触发定时器
    begin
      Timer:=5;  //Timer是一个类私有变量
      Timer1.Enabled:=True;
    end;procedure TFormStart.Timer1Timer(Sender: TObject); //如果Timer减少到0则关闭
    begin
        Timer:=Timer-1;
        If Timer<=0 Then
        Begin
         Timer1.Enabled:=False;
         Close;
        End;
    end;
    //这样还可以在欢迎窗体显示过程中响应鼠标事件,比如如果不希望窗体显示预定那么长的时间,就单击窗体让他自行关闭:procedure TFormStart.ImageStart1Click(Sender: TObject);
    begin
      Timer1.Enabled:=False;
      Close;
    end;
      

  4.   

    对,你要显示登录界面就在主窗体中再加若干处理语句就行了://在主窗体中创建欢迎窗体,这里是主窗体
    procedure TFormMain.FormCreate(Sender: TObject);
    begin
       ...
         
       ShowStartForm();  
       If Not IsLogin Then Close;end;//IsLogin是一个函数,如果登陆成功则返回真,否则为假
    Function TFormMain.IsLogin():Boolean;
      

  5.   

    With FormStart Do
      Begin
        ShowModal; -->>这句有问题!
    你应该设置为Show, 然后, 让这个窗体显示在最前, 后台继续操作!
    最后, 由后台来释放这个FormStart
      

  6.   

    With FormStart Do
      Begin
        ShowModal; -->>这句有问题!
    你应该设置为Show, 然后, 让这个窗体显示在最前, 后台继续操作!
    最后, 由后台来释放这个FormStart
    -----------------------------------------------
    大虾说得对,可能有问题,因为我的应用中没有后续其他操作,所以不存在问题。
      

  7.   

    但是设为Show以后,欢迎窗体一闪而过,设的时间好像没用。
      

  8.   

    还没有问题???
    看看这个
    project1的文件
    begin
      Application.Initialize;
      FrmStart:=TFrmStart.Create(FrmStart);//闪现窗体
      FrmStart.Show;
      FrmStart.Update;
      Try
      Application.CreateForm(TFrmMain, FrmMain);
      Finally
      FrmStart.Free;
      end;
      Application.Run;
    end.mainForm的Create事件
    procedure TFrmMain.FormCreate(Sender: TObject);
    begin
      sleep(2000);
    end;还有你的定时器用的。
    无语
      

  9.   

    和和,只知其一不知其二。你的这种就是我开始用的方式,问题是:第一次用户可能愿意等长一点,以后熟悉了每次都耗费同样的时间?我用定时器是将显示时间由显示窗体控制,这样在显示期间可以通过鼠标单击事件来结束欢迎窗体。和和用定时器和Sleep函数用什么区别呢?Sleep函数谁都会用,定时器则不一定。
      

  10.   

    我晕,
    我不知道定时器是应该这样用
    procedure TForm1.FormCreate(Sender: TObject);
    begin
        timer1.Interval:=5000;
        timer1.Enabled:=true;
    end;
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    label1.Caption:=label1.Caption+'5秒到了!';
    Timer1.Enabled:=false;
    end;
    还是应该这样用
    procedure TFormStart.FormCreate(Sender: TObject); //确定显示时间并触发定时器
    begin
      Timer:=5;  //Timer是一个类私有变量
      Timer1.Enabled:=True;
    end;procedure TFormStart.Timer1Timer(Sender: TObject); //如果Timer减少到0则关闭
    begin
        Timer:=Timer-1;
        If Timer<=0 Then
        Begin
         label1.Caption:=label1.Caption+'5秒到了!';
        End;
    end;