主题:登录请教
本人在做登录模块时碰到如下问题:
在输入的用户名和密码错误的情况下,设置了显示输入错误的提醒对话框,单现在在提醒出错后,自动退出了系统,而不是聚焦到输入用户名的Edit1组件中,
程序代码如下:
procedure Tlogin.BitBtn1Click(Sender: TObject);
begin
with data.ADOQuery1 do
begin
close;
sql.Clear;
sql.add('select * from 操作员表 where (操作员姓名=:a) and(操作员密码=:b)');
parameters.ParamByName('a').Value:=trim(Edit1.Text);
parameters.ParamByName('b').Value:=trim(Edit2.Text);
open;
end;
if data.ADOQuery1.RecordCount>0 then
begin
czymc:=data.ADOQuery1.fieldbyname('操作员姓名').AsString;
m:=True;
Edit1.clear;
Edit2.clear;
close;
end
else
begin
if i<3 then
begin
Application.MessageBox('用户名称或密码不正确,请重新输入。','提示',0+64);
Edit1.Clear;
Edit2.Clear;
Edit1.setfocus;此处有不正确的时候便聚焦到Edit1,请问为什么不能实现效果
Inc(i);
end
else
begin
Application.MessageBox('对不起,您无权使用本系统。','提示',0+64);
Application.Terminate;
end;
end;
end;
其中i: integer = 0;
m: Boolean = False;//防止用户关闭登录窗口进入系统
czymc为引用主窗体里申明的一个变量。
在输入的用户名和密码错误的情况下,设置了显示输入错误的提醒对话框,单现在在提醒出错后,自动退出了系统,而不是聚焦到输入用户名的Edit1组件中,
程序代码如下:
procedure Tlogin.BitBtn1Click(Sender: TObject);
begin
with data.ADOQuery1 do
begin
close;
sql.Clear;
sql.add('select * from 操作员表 where (操作员姓名=:a) and(操作员密码=:b)');
parameters.ParamByName('a').Value:=trim(Edit1.Text);
parameters.ParamByName('b').Value:=trim(Edit2.Text);
open;
end;
if data.ADOQuery1.RecordCount>0 then
begin
czymc:=data.ADOQuery1.fieldbyname('操作员姓名').AsString;
m:=True;
Edit1.clear;
Edit2.clear;
close;
end
else
begin
if i<3 then
begin
Application.MessageBox('用户名称或密码不正确,请重新输入。','提示',0+64);
Edit1.Clear;
Edit2.Clear;
Edit1.setfocus;此处有不正确的时候便聚焦到Edit1,请问为什么不能实现效果
Inc(i);
end
else
begin
Application.MessageBox('对不起,您无权使用本系统。','提示',0+64);
Application.Terminate;
end;
end;
end;
其中i: integer = 0;
m: Boolean = False;//防止用户关闭登录窗口进入系统
czymc为引用主窗体里申明的一个变量。