li_zhifu是对的,有几点可以商榷:
1 是否把代码放在 Username 控件的 OnExit 事件上,这样只要焦点离开了UserName输入区
就执行核查,逻辑上更好一些,我这么认为的,:-)
2 Query1.sql.add('select count(Name) from user where Name='#39+edit1.text+#39);
Query1.active:=True;
if query1.Fields[0].AsInteger = 0 then
showmessage('No this User'+' '+edit1.text);
这样就不用将整条记录返回来了,只需要取回感兴趣的内容就可以了...
我建议这样写:在输用户名的Edit中写代码procedure TLoginForm.UserEditKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
with Query1 do
begin
Close;
SQL.Clear;
SQL.Add('Select *');
SQL.Add('From 表 别名');
SQL.Add('Where 条件');
ParamByName('cn').AsString:=UserEdit.Text;
Open;
if recordcount<>0 then PasswordEdit.SetFocus
else
begin
if MessageDlg('没有该用户!是否继续?',mtConfirmation,
[MBYes,MBNo],0)=mrYes then
begin
UserEdit.Clear;
UserEdit.SetFocus;
end;
end;
Close
end;
end;
end;
Query1.Active:=False;
Query1.Sql.Clear;
Query1.sql.add('select * from user where Name='#39+edit1.text+#39);
Query1.active:=True;
if query1.recordcount<=0 then
showmessage('No this User'+' '+edit1.text);