两种登录界面验证写法
效果:如果登陆正确跳转到主界面,如果登陆不进去关闭或者重新登陆。
第1种思路:同时验证账号和密码是否对再判断,只判断一种情况即可;即都不对的时候提示;
procedure TFLogin.btn1Click(Sender: TObject); //确认按钮 begin with frmDataPool.qry用户账号表 do begin Close; SQL.Text:='select * from 用户账号表 where admid = ' + QuotedStr(edtAdmid.Text) + ' AND admps = ' + QuotedStr(edtAdmps.Text); Open; end; if frmDataPool.qry用户账号表.IsEmpty then //如果账号密码查不到,说明账号不存在 begin ShowMessage('账号不存在'); Exit; end; Self.Close; end; procedure TFLogin.btn2Click(Sender: TObject); begin if MessageDlg('确定退出吗,退出后程序将关闭', mtConfirmation , [mbYes,mbNo],0)=mrYes then begin FLogin.ModalResult:= mrCancel; //对话框mrcancel返回 form3.Close; end else FLogin.ModalResult:=0; end;
第2种方法:分别判断账号是否存在,密码是否错误
procedure TFLogin.btn1Click(Sender: TObject); begin with frmDataPool.qry用户账号表 do begin Close; SQL.Text:='select * from 用户账号表 where admid = :admid '; Parameters.ParamByName('admid').Value:=edtAdmid.Text; //为admin参数赋值; Open; end; if frmDataPool.qry用户账号表['admps']=null then //如果账号查找不到,说明账号错 begin ShowMessage('账号不存在'); Exit; end; if frmDataPool.qry用户账号表['admps'] <> edtadmps.Text then begin ShowMessage('密码错'); exit; end; FLogin.ModalResult:=mrOk;//对话框mrok返回 end; procedure TFLogin.btn2Click(Sender: TObject); begin if MessageDlg('确定要退出?',mtConfirmation,[mbYes,mbNo],0)=mryes then begin FLogin.ModalResult:=mrCancel ; Form3.Close; end else FLogin.ModalResult:=0; end;
附注:
在主窗口的onactive事件中添加:
procedure TForm3.FormActivate(Sender: TObject); begin if FLogin.showmodal=mrok then form3.show; end;