我在delphi_5开发指南上找到了一个代码,是login Form。但我现在用ADO,我在登陆窗口前就连接好ADOConnection,登陆是在user库里拿权限。请教教我改一下下面的代码,万分感谢。---MainForm----
...procedure TMainForm.dbMainLogin(Database: TDatabase;
LoginParams: TStrings);
begin
GetLoginParams(LoginParams);
end;
...
---loginForm----
...
function GetLoginParams(ALoginParams: TStrings): word;
var
LoginForm: TLoginForm;
begin
LoginForm := TLoginForm.Create(Application);
try
Result := LoginForm.ShowModal;
if Result = mrOK then
begin
ALoginParams.Values['USER NAME'] := LoginForm.edtUserName.Text;
ALoginParams.Values['PASSWORD'] := LoginForm.edtPassWord.Text;
end;
finally
LoginForm.Free;
end;
end;
....
...procedure TMainForm.dbMainLogin(Database: TDatabase;
LoginParams: TStrings);
begin
GetLoginParams(LoginParams);
end;
...
---loginForm----
...
function GetLoginParams(ALoginParams: TStrings): word;
var
LoginForm: TLoginForm;
begin
LoginForm := TLoginForm.Create(Application);
try
Result := LoginForm.ShowModal;
if Result = mrOK then
begin
ALoginParams.Values['USER NAME'] := LoginForm.edtUserName.Text;
ALoginParams.Values['PASSWORD'] := LoginForm.edtPassWord.Text;
end;
finally
LoginForm.Free;
end;
end;
....
begin
login:=Tlogin.Create(self);
try
login.ShowModal;
finally
login.Free;
end;
end;
procedure Tlogin.FormCreate(Sender: TObject);
var
id:ansistring;
begin
adoquery1.clear;
adoquery1.sql.add('select * from user_inf');
adoquery1.open;
while not adoquery1.Eof do
begin
id:=adoquery1.fielbyname('user_name');
user_name.Items.Add(id);
adoquery1.next;
end;
user_name.ItemIndex:=0;
end;
procedure Tlogin.Button1Click(Sender: TObject);
var
pass,pw:string;
i:integer;
begin
if checkpassword then
begin
adoquery1.clear;
adoquery1.sql.add('select * from user_inf where user_name='''+user_name.Text+'''');
adoquery1.open;
pass:=trim(adoquery1.fielbyname('user_password'));
pw:=trim(password.Text);
if length(trim(pass))<>length(trim(password.Text)) then
showmessage('非法用户!')
else
close;
end;
如果要求比较严格应该区分大小写,以及登陆次数,和在指定的时间内输入密码。
如果foxmail中的一样30秒内必需输密码等。
再用hook铺抓 人员有多少时间没有动键盘
做个判断 如果 > n 就如何 .....:)
p183