在工程文件里加了一个登录窗体loginform,ShowModal它,背后是MainForm。
在loginForm输入用户密码后,
确定按钮中这样写:
  MainFrm.ShowModal();
  LoginFrm.Close();
----------
LoginForm的FormClose过程中这样写:
  Action := caFree;
  Application.Terminate ;//注意这一句
如果加这句点确定按钮后程序就也关闭了;如果不加这句点LoginForm右上角的关闭按钮后可以进入MainForm,等于没有登录!
  怎么办???

解决方案 »

  1.   

    可以Login窗体上的确定按钮的Default属性被设为True.
    把它设为False再试下
      

  2.   

    在工程文件中这样
    Application.CreateForm(Tdm, dm);
    loginfrm:=Tloginfrm.Create(application);
      loginfrm.Show;
      while not loginfrm.enter do
      application.ProcessMessages;
     Application.CreateForm(TsddsmainFrm, sddsmainFrm);
    就可以了
      

  3.   

    Application.Initialize;
      Application.CreateForm(TfrmMain, frmMain);
      Sleep(500);
      with TfrmLogin.Create(Application) do
      begin // 校验成功返回  ModalResult := 1;否则 ModalResult := 2;
        ShowModal;
        if ModalResult = 2 then 
        begin
          Halt;
        end
        else if ModalResult = 1 then
        begin
          Close;
          Application.Run;
        end;
      end; 
      Application.Run ;
    end.
      

  4.   

    Application.Initialize;
      Application.CreateForm(TfrmMain, frmMain);
      Sleep(500);
      with TfrmLogin.Create(Application) do
      begin // 校验成功返回  ModalResult := 1;否则 ModalResult := 2;
        ShowModal;
        if ModalResult = 2 then 
        begin
          Halt;
        end
        else if ModalResult = 1 then
        begin
          Close;
          Application.Run;
        end;
      end; 
    end.
      

  5.   

    创建mainform
    创建loginform
    if loginform.showmodal=mrok then 
      mainform.showmodal;loginform.btnok
      if password is wrong then exit;
      else modalresult:=mrok
      

  6.   

    不要再登陆窗口中写,在工程文件中写!同意 wjlsmail(计算机质子)我就不写了
      

  7.   

    你不让登陆窗体关闭让他hide然后在主窗体的onclose事件中写application.terminate;
      

  8.   

    可以在FORM的属性设置里把右上角的叉叉拿掉的.