你的逻辑不好,为什么不把判断放到登陆窗体里面呢。在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;
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;
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 里面的事件里头,那样好处理
ShowMessage("用户不存在或密码错误");
Self.ModalResult := mrNone;
正常登陆则:
Self.ModalResult := mrOK;