两个form:   form1: 是application 的mainform
             form2: 是一个登录form我现在想在程序启动时显示form2而不显示form1,how to?

解决方案 »

  1.   

    TForm2.Create(Application).ShowModel;
    ......
    Application.CreateForm(TForm1, Form1);
      

  2.   

    如果是dpr中
    我这么写:
    begin
      Application.Initialize;
      TForm2.Create(Application).ShowModal;
      Application.CreateForm(TForm1, form1);
      Application.Run;
    end.不过出错‘ access violation’
      

  3.   

    再有Application的handle是不是就是mainform的handle,还是激活的那个窗口的handle?
      

  4.   

    program Project1;uses
      Forms,windows,
      main in 'main.pas' {F_Main},
      Welcome in 'Welcome.pas' {F_Welcome};
    {$R *.res}begin
      Application.Initialize;
      F_welcome :=TF_Welcome.Create(application);
      F_Welcome.Show ;
      F_Welcome.Update ;
      Application.Title :='一个欢迎画面程序';
      Application.CreateForm(TF_Main, F_Main);
      F_Welcome.Hide ;
      F_Welcome.Free ;
      Application.Run;
    end.自己看一下吧.
      

  5.   

    to jacobran()  还是不行 运行到F_welcome :=TF_Welcome.Create(application);
    这个地方就错了
      

  6.   

    在单元文件内调整FORM2的位置在Application.CreateForm(TForm1, Form1);前
      

  7.   

    上面的方法都测试不过啊还有就是我的form1,在后面要重新调用form2,应该不能把form2先free掉吧
      

  8.   

    to sandyboy()
    那样mainform就换了
      

  9.   

    project -> Option ->Main Form: Form1
    Autocreate Form : Form1;Project -> view source->
    Uses 
      Unit2;//Form2的单元名称。
    begin
      Application.Initialize;
      Application.Run;
      Try
        Application.CreateForm(Form2, TFrom2);
        Form2.ShowModal;
      Finally
        Form2.Free;
      End;
      if Form2.ModalResult = 2 then  //=2 时登陆成功。
        begin
          Application.CreateForm(Form1, TForm1);
          Form2.ShowModal;
        end
      else
       Application.Terminate;
    end;
      

  10.   

    在form1的ONSHOW事件里:try
      form2:= Tform2.create(self);
      form2.showmodal;
    finally
      form2.free;
    end;