注册 登录
编程论坛 Delphi论坛

关于判断的问题(还有焦点)

liuqiang_sy 发布于 2007-04-19 21:33, 576 次点击

procedure TForm1.Edit1Exit(Sender: TObject);
var
i:integer;
begin
for i:=1 to length(edit1.Text) do
begin
if(not(edit1.Text[i] in ['a'..'z','A'..'Z','0'..'9'])) then
begin
label4.Caption:='特殊字符';
exit;
end
else
label4.Caption:='';
end;

if edit1.Text='' then
begin
label4.Caption:='用户名不能为空';
label4.Font.Color:=clred;
end
else
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Text:='select * from DL where ID='''+EDIT1.Text+'''';
ADOQUERY1.Open;
if adoquery1.RecordCount<>0 then
begin
label4.Caption:='该用户名以存在';
label4.Font.Color:=clred;
end
else
begin
label4.Caption:='';
label4.Font.Color:=clbtnface;
end;
end;

end;


procedure TForm1.Edit2Exit(Sender: TObject);
begin
if edit2.Text='' then
begin
label5.Caption:='请输入密码';
label5.Font.Color:=clred;
end
else
begin
label5.Caption:='';
label5.Font.Color:=clbtnface;
end;
end;

procedure TForm1.Edit3Exit(Sender: TObject);
begin
if edit3.Text='' then
begin
label6.Caption:='请输入密码';
label6.Font.Color:=clred;
end
else
begin
if edit3.Text<>edit2.Text then
begin
label6.Caption:='确认密码不一致';
label6.Font.Color:=clred;
end
else
begin
label6.Caption:='';
label6.Font.Color:=clbtnface;
end;
end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
form1.Close;
end;

如果第一次在EDIT1中输入一个合法字符如1234不显示提示
如果第一次在EDIT1中输入的是一个不合法字符如@@@!!刚出显示
但问题是第一次在EDIT1中输入的是合法我跳到EDIT2把焦点给到EDIT2然后我在跳回在给EDIT1这时输入一个不合法字符@@@!!就没有提示.

3 回复
#2
nongen2007-04-19 22:46
for i:=1 to length(edit1.Text) do
begin
if(not(edit1.Text[i] in ['a'..'z','A'..'Z','0'..'9'])) then
begin
label4.Caption:='特殊字符';
exit;//这里用break 则是退出这个循环,而用exit的话,则退出procedure TForm1.Edit1Exit(Sender: TObject);

end
else
label4.Caption:='';
end;
#3
liuqiang_sy2007-04-20 08:49

问题和break的关系不大.
现在的问题是第一次进入了FOR循环判断以满足条件的给出提示(特殊字符给出提示),
但是如果第一次输入的是合法符字在把焦点给到EDIT2中.然后在回到EDIT1中.这时候输入一个不合法的符字它就不进入FOR循环做判断,.

#4
nongen2007-04-20 08:59

winxpsp2\delphi7测试你的代码
for i:=1 to length(edit1.Text) do
begin
if(not(edit1.Text[i] in ['a'..'z','A'..'Z','0'..'9'])) then
begin
label4.Caption:='特殊字符';
exit;
end
else
label4.Caption:='';
end;
通过。
包括你所说的退出edit1再edit2再edit1的焦点,还是正常的。

1