program Project_login;uses
  Forms,
  windows,
  Unit_login in 'Unit_login.pas' {Form1},
  Unit_main in 'Unit_main.pas' {Form2},
  Unit_welcom in 'Unit_welcom.pas' {Form3};{$R *.RES}
var mydate:longint;
begin  form3:=TForm3.create(application); //欢迎界面
  form3.show;
  form3.update;
  mydate:=gettickcount;
  while((GetTickCount-mydate) div 1000 <2) do;//延时2秒
  Application.Initialize;
  Application.Title := '欢迎使用';
  Application.CreateForm(TForm2, Form2);   //主的MDIFORM窗体
  Application.CreateForm(TForm1, Form1);    //登陆窗体
  form3.Close;
  form3.free;
  Application.Run;
end.//为什么登陆窗体没有出现?
//如果将    Application.CreateForm(TForm2, Form2);   //主的MDIFORM窗体
// Application.CreateForm(TForm1, Form1);    //登陆窗体
//顺序调换一下,登陆窗体会出现。
//但是, FORM1不是MDI主窗体啊 又不行
//必须登陆完了之后,要  FORM1.CLOSE 这样整个程序退出了主窗体

解决方案 »

  1.   

    应该先创建登陆窗体,判断登陆验证是否成功,如果成功,关闭自己并且显示主窗体,然后在主窗体的create里面彻底free登陆窗体,不成功的话,主窗体也不用创建了
      

  2.   

    将登陆窗体按照欢迎界面的方式使用。把form2做主窗体。
      

  3.   

    在主窗体的create时件中添加你的登陆窗体。
      

  4.   

    把前面的一句写成
    Form2 := TForm2.Create(Application);
      

  5.   

    在主窗体的OnShow事件里创建并调用登录窗体,判断其返回值(ShowModal = mrOK),确定合法性,否则Application.Terminate.