效果:如果登陸正確跳轉到主界面,如果登陸不進去關閉或者重新登陸。
第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;