使用循环套上,如果正确则跳出循环,否则继续while LoginFrm.ModalResult = mrOK then 
begin
    ......
    ......
end

解决方案 »

  1.   

    你的逻辑不好,为什么不把判断放到登陆窗体里面呢。在LoginFrm窗体里放一个标志bLoginSuccess,用来记录用户是否正确登陆。LoginFrm := TLoginFrm.Create(Application); 
    LoginFrm.ShowModal; 
    if (LoginFrm.ModalResult = mrOK) and (LoginFrm.bLoginSuccess) then 
    begin
    //////系统正常处理
    end;
    LoginFrm.Free; 在LoginFrm的窗体里做判断的代码,当用户点击了确定,就进行口令的判断。可以增加变量来控制允许登陆错误的次数。
    procedure LoginFrm.Button1Click(Sender: TObject);
    begin
        CurrentUser := Edit1.Text; 
        CurrentPassword := Edit2.Text; 
        Table1.Active := True;     if Table1.Locate('UserID',CurrentUser,[]) then 
        begin 
            Password := Table1.FieldByName('Password').asstring; 
            if StrLIComp(Pchar(CurrentPassword),Pchar(Password),StrLen(Pchar(Password))) = 0 then 
            begin
                bLoginSuccess:=true;
                Close;
            end else
                ShowMessage('用户密码错误,请重新输入!'); 
    /////加变量,若超过几次错误,强制关闭窗体。
        end;
    end;
      

  2.   

    program Project1;uses
      Forms,
      Unit1 in 'Unit1.pas' {Frm_qy},
    。。
    。。
    {$R *.RES}begin
      Application.Initialize;
      Application.CreateForm(TFrm_main, Frm_main);
      Application.CreateForm(TFrm_qy, Frm_qy);
      Application.CreateForm(TDataModule2, DataModule2);
      Application.CreateForm(TF_comps, F_comps);
      F_LogSiits:= TF_LogSiits.Create(application);
      F_LogSiits.ShowModal ;  Application.CreateForm(TFrm_qm, Frm_qm);
      Application.CreateForm(TForm2, Form2);
      Application.CreateForm(TForm3, Form3);
      Application.CreateForm(Trpt_qy, rpt_qy);
      Application.CreateForm(Trpt_bg, rpt_bg);
      Application.CreateForm(Trpt_std, rpt_std);
      Application.CreateForm(TRPT_TZ, RPT_TZ);
      Application.CreateForm(TForm4, Form4);
      Application.CreateForm(Trpt_tj, rpt_tj);
      Application.CreateForm(TFrm_COPY, Frm_COPY);
      Application.CreateForm(TForm7, Form7);
      Application.CreateForm(TF_LogSiits, F_LogSiits);  F_LogSiits.Hide;
      F_LogSiits.Free; 
      Application.Run;
    end.我是这样弄的,判断登陆的正确与否在  F_LogSiits 里面的事件里头,那样好处理
      

  3.   

    登陆界面确定按纽的事件处理中,如果用户不存在或密码错误,则:
    ShowMessage("用户不存在或密码错误");
    Self.ModalResult := mrNone;
    正常登陆则:
    Self.ModalResult := mrOK;