程序运行时先把副窗体Shou出来~~等他关闭后在Show主窗体
在你的工程文件(*.dpr)里写~~
    Application.Initialize;
    Form1:=TForm1.Create(Application);
    Form1.ShowModal;
    Form1.Free;
    Application.CreateForm(TFrmMain, FrmMain);
    Application.Run;

解决方案 »

  1.   

    把工程文件写成这样——begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.CreateForm(TForm2, Form2);
    //**********************************
      Application.ShowMainForm := False;
      Form2.ShowModal;//至于Form2的自动关闭是另外一回事了(比如通过Timer来关闭)。
      Application.ShowMainForm := True;
    //**********************************
      Application.Run;
    end.
      

  2.   

      为啥要改工程文件呢?我是在主窗体的oncreate时间里将主窗体hide的,就是不行。
    我是菜鸟,请大虾多多指教!
      

  3.   

    不行就要接受新方法啊:)
    实在不想动工程文件的话,可以在MainForm.OnCreate里加上Application.ShowMainForm := False;(光Hide是没用的,这是主窗体的性质决定的,你看看TApplication.Run的源码就知道了)。把Form2.Visible设为True,然后在Form2.OnClose里写上Application.ShowMainForm := True;和MainForm.Show;说实话还是写在工程文件里清楚。
      

  4.   

    请问你的副窗体是spalshform,还是别的什么登录窗
    你可用
      application.showmainform := false;
      application.showmainfomr := ture;如果是spalshform,另用法子
      

  5.   

    请问jin_fei(金飞)若是spalshform用啥法子 ?
    to;dq(独轻) 
    为啥是showmodal呢?我试过show,就两个窗体一起显示了。为啥?
    Application.ShowMainForm := True;
    和MainForm.Show;
    为啥还要加上MainForm.Show呢?
    Application.ShowMainForm := True;
    这个不已经是显示出来了吗?
      

  6.   

    Application.ShowMainForm := false;
    application.title:='';还可隐藏呢!
      

  7.   

    1.因为Show不等窗口关闭就直接返回调用者了,你的要求是副窗体关闭后再显示主窗体的,最简单的办法当然就是用ShowModal了。2.呵呵,其实就这句MainForm.Show有用,加上Application.ShowMainForm := True;纯粹是为了逻辑上的完整性,实际上它不起任何作用的。ShowMainForm属性只在Run的一开始使用一次。
      

  8.   

    to;dq(独轻) 
    加上Application.ShowMainForm := True是有用的。
    我试过Application.ShowMainForm := false;以后做其它事,若不加这句就显示不出主窗体出来了。你有空试试看。好吗?
      

  9.   

           spaform := Tspaform.Create(application);
           spaform.Show;
           spaform.Update;
         //  StartTime := now;
         //  sleep(1000);
           Application.CreateForm(Tmainform, mainform);
           spaform.Hide ;
           spaform.free;
           Application.Run;
       此段代码放在project.dpr中,其中spaform为您要显示的splash窗体,mainform为主窗体,
    加注释的两段代码为定义显示SPALSH窗体的时间,可不用
      

  10.   

    procedure TForm1.FormCreate(Sender: TObject);
    var
     form2:Tform2;
    begin
     form2:=Tform2.create(self);
     with form2 do
      try
        showmodal;
        update;
        Timer1.Enabled:=true;
        //sleep(5000);
        application.ProcessMessages;
       finally
        free;
     end;
    end;
    procedure TForm2.Timer1Timer(Sender: TObject);
    begin
     close;
     //applicaiton.Terminate;
     timer1.Enabled:=false;
    end;2种情况:
    1)timer为啥没用?只有用sleep()。
    2)在sleep的情况下,为啥用showmodal的话,要手动关了form2后再等5秒才显示form1而用   show的话5秒后form2会自动关掉,form1会自动显示。
       而在timer1的情况下,用showmodal的话,要手动关了form2后才显示form1,timer1里的代码好像程序并不执行。而用show的话。form2只闪了闪就显示form1了。为啥?上面的大虾能在回答吗?
    在此谢过了!