如何即输入即检查
我有三个editbox 每个editbox的合法值为1--10,当其中任意一个为10时其余均只能为零。
当不为10时,顺序应递增。即
合法值 10,0,0
0,10,0
1,5,9
非法值 10,7,0
4,2,9
另外有一个button当此button 按下时,要对这三个editbox的值进行一定的运算。
问题是:
当我在每个editbox.exit写入合法检查的代码后
按下button,最后编辑的editbox不执行exit事件
用perform的EN_KILLFOCUS也不行,似乎KILLFOCUS对鼠标不响应
我该如何办
源代码见下:(初次写,请多见谅)
procedure TForm1.Edit4Exit(Sender: TObject);
var i:integer;
begin
try
i:=StrToInt(Edit4.text);
if i>10 then
begin
StatusBar1.Panels[0].Text:='输入值应在0...10之间';
Edit4.SetFocus;
end
else
begin
if i=10 then
begin
Edit5.Text:=Inttostr(0);
Edit6.Text:=IntToStr(0);
end;
StatusBar1.Panels[0].Text:='';
fL:=StrToint(Edit4.text);
end;
except
StatusBar1.Panels[0].Text:='输入不合法!输入值应在0...10之间';
Edit4.SetFocus;
end;
end;
procedure TForm1.Edit5Exit(Sender: TObject);
var i:integer;
begin
try
i:=StrToInt(Edit5.text);
if (i in [0..10]) then
begin
case fL of
0: begin
StatusBar1.Panels[0].Text:='';
fM:=i;
end;
1..9: begin
if i<fL then
begin
StatusBar1.Panels[0].Text:='输入值应不小于'+IntToStr(EDIT4.TEXT);
edit5.SetFocus;
end
else
begin
StatusBar1.Panels[0].Text:='';
fM:=i
end;
end;
10: begin
edit5.text:=inttostr(0);
Edit6.Text:=IntTostr(0);
fM:=10;
end;
end;
end
else
begin
StatusBar1.Panels[0].Text:='输入不合法!输入值应在0...10之间';
Edit5.SetFocus;
end;
except
StatusBar1.Panels[0].Text:='输入不合法!输入值应在0...10之间';
Edit5.SetFocus;
end;
end;
procedure TForm1.Edit6Exit(Sender: TObject);
var i:integer;
begin
try
i:=StrToInt(Edit6.text);
if (i in [0..10]) then
begin
case fM of
0: begin
StatusBar1.Panels[0].Text:='';
fS:=i;
end;
1..9: begin
if i<fM then
begin
StatusBar1.Panels[0].Text:='输入值应不小于'+IntToStr(EDIT5.TEXT);
edit6.SetFocus;
end
else
begin
StatusBar1.Panels[0].Text:='';
fS:=i
end;
end;
10: begin
Edit6.Text:=IntTostr(0);
fS:=0;
end;
end;
end
else
begin
StatusBar1.Panels[0].Text:='输入不合法!输入值应在0...10之间';
Edit6.SetFocus;
end;
except
StatusBar1.Panels[0].Text:='输入不合法!输入值应在0...10之间';
Edit6.SetFocus;
end;
end;