小弟在做东西的时候,想做一个登录窗体,在点击确定后登录框消失,主窗体显示出了,我用了form1.hide;form2.show;但是关闭form2之后form1还是在内存中存在,在windows的任务管理器中还可以看到工程还在运行,在form2中怎么才能使工程结束,请大家帮帮忙,解决就给分

解决方案 »

  1.   

    在关闭form2 的时候,需要关闭form1 或 Application.Terminate;
      

  2.   

    L:Boolean;
    ......
    Try
      Form1:=TForm1.Create(Application);
      L:=Form1.ShowModal=1;
      //
    Finally
      If Assigned(Form1) then Form1.Free;
    End;
    //停止
    If Not L then Application.Halt;
    //继续显示2
    Form2.Show;
      

  3.   

    procedure TFormMain.FormCreate(Sender: TObject);
    begin
      if not assigned(FormLogin) then
      begin
        try
          FormLogin := TFormLogin.Create(self);
        except
          Application.Terminate;
        end;
      end;
      FormLogin.ShowModal;
      ...      //这里开始的程序在FormLogin的事件结束后才会执行
    end;FormLogin中的事件,
    通过验证了写FormLogin.Close
    没有通过验证写Application.Terminate试试看如何。
    我的程序这么写的,
    还算好用。
      

  4.   

    能不能写详细点,我看不太懂
    谢谢了
    not assigned(FormLogin)是什么意思
      

  5.   

    在工程文件里这样写:
    Application.Initialize;
      Frmlogin:=Tfrmlogin.Create(Frmlogin);
      Frmlogin.ShowModal;
      if not isLoginin then exit;//islogin是全局变量,用于判断登陆是否成功
      Application.CreateForm(TFrmMain, FrmMain);
        Application.Run;
    end.
      

  6.   

    你form1创建了,没free,那么在form2关闭的时候,form1还保持着mainform的身份。
    你的mainform都没释放,工程又怎会结束呢!
      

  7.   

    楼上几位的方法都差不多了,assigned(FormLogin)就是
    FormLogin <> nil,即FormLogin创建了,在内存中存在
      

  8.   

    在项目文件里创建、使用登录窗体,在点击确定后登录框释放登陆窗体。
    program Project1;uses
      Forms,
      main in 'main.pas' {Formmain},
      login in 'login.pas' {Formlogin};{$R *.res}
    var
      formlogin:TFormlogin; 
    begin
      Application.Initialize;
      if not assigned(formlogin) then
      begin
        try
          FormLogin := TFormLogin.Create(nil);
        except
            Application.Terminate;
        end;
      end;
      FormLogin.ShowModal; //登陆窗体Onclose事件里添加:Action:=caFree,释放窗体。
      Application.CreateForm(TFormmain, Formmain);
      Application.Run;
    end.