效果:如果登陆正确跳转到主界面,如果登陆不进去关闭或者重新登陆。
第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;