我在写登陆窗体的时候不管是用户名为空还是密码错误出现过提示对话框后都会执行formclose退出整个工程
procedure TFlog.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if islogin=false then
begin
showmessage('fclose');
application.Terminate ;
end;
end;procedure TFlog.RzBitBtn1Click(Sender: TObject);
begin
if rzComboBox1.text ='' then
  begin
     messagebox(Handle,'请选择一个正确的用户名!','提示',MB_OK+MB_ICONINFORMATION);
     rzComboBox1.SetFocus;
     exit;
  end;
  with DM1.ADODataSet4 do try
      if not Locate('用户名',rzCombobox1.Text,[])then
         begin
         Messagebox(Handle,'找不到该用户名,请检查您选择的用户名是否正确或与管理员联系!','错误',MB_OK+MB_ICONWARNING);
         rzComboBox1.SetFocus;
         Exit;
      end
      else
        begin
         if (trim(rzEdit1.Text)<>trim(FieldByName('密码').AsString)) then
            begin
             if loads<3 then
               begin
                 Messagebox(Handle,pchar('您输入的密码有误,您还有'+IntToStr(3-Loads)+'次机会重新输入!'),'错误',MB_OK+MB_ICONWARNING);
                 rzEdit1.SetFocus;
                 Inc(Loads);
                Exit;
               end
            else
            flog.Close;
            end
         else
           begin
           islogin:=true;
             //记下登陆用户名
            //LandingUser:=Combobox1.Text;
            //mainform.rzStatusPane2.Caption:='用户:'+LandingUser;
            flog.Close;
         end;
      end;
  except
  end;
end;

解决方案 »

  1.   

    islogin 是你定义的什么东东 还有你窗体CLOSE的时候是在哪个地方CLOSE的 
    你在窗体CREATE和SHOW的时候分别设置个断点 看在哪行代码的时候跳过去的不就知道了吗~~~
      

  2.   

    你写的这个逻辑上处理欠佳。你在登录的过程当中用Flog.Close将Flog窗体关闭,而在Flog窗体的关闭事件里将整个应用程序结束,所以不管你是不是成功验证用户信息,只要你关闭了Flog窗体,就意味着你应用程序即将终止。