如何检验TEdit输入的正确性?(50分)

  • 主题发起人 主题发起人 sixeight
  • 开始时间 开始时间
S

sixeight

Unregistered / Unconfirmed
GUEST, unregistred user!
最好不要在OnExit事件中。
例如:
if Edit1.Text <> 'ABC' then
begin
ShowMessge('error');
Edit1.SetFocuse;
end
如果写在OnExit事件中,我用按钮的快捷键(不用鼠标)时,则不会判断。我应该怎么写呢?
 
那你就在onpress事件中一个一个的判断吧。
 
在Button1的OnClick事件里引用Exit的退出事件:
Edit1Exit(nil);
 
如果不想用 OnExit,
你可以考虑 TMaskEdit ,
也可以考虑 在Edit 的 OnKeydown 中屏蔽一些非法的字符。

其实你讲的“按钮的快捷键”这一问题应该不存在,
因为转到其它控件是,首先会执行 OnExit。
 
>>其实你讲的“按钮的快捷键”这一问题应该不存在。
确实存在的,如果按钮Caption 为'保存(&amp;S)', 当焦点还在Edit1中时,按Alt+S,则不
会触发OnExit事件,因为焦点仍在Edit1中。
能不能不在按钮事件中写OnExit来解决?
 
去掉按钮的快捷健不就行了!
 
>>去掉按钮的快捷健不就行了!
不行
 
我觉得在Application.onMessage 中判断比较好,
这样可以对所有的页面都适用,

 
如下解决:
OnChange事件:
begin
if Length(Edit1.Text) <> 3 then
Exit
else
begin
if Exit1.Text <> 'ABC' then
begin
ShowMessge('error');
Edit1.SetFocuse;
end
end;
 
to Hellotao:
能不能详细一点,举个例子. thanks

另外:我看TField有数据验证事件,TEdit应该也能做吧?
 
OnChange事件:
begin
if Length(Edit1.Text) <> 3 then //首先判断Edit1中的文本长度是否为验证文本长度
Exit
else
begin
if Exit1.Text <> 'ABC' then //如果Edit中的文本长度符合要验证文本长度,再进行文本验证
begin
ShowMessge('error');
Edit1.SetFocuse;
end
end;
 
'ABC'只是举个例子,长度是未知的?
 
干嘛不用在button的onclick事件中? ?? 不明白..
 
既然长度为未知:
OnChange事件:
begin
//ValidText为验证文本
if Length(Edit1.Text) <> Length(ValidText) then //首先判断Edit1中的文本长度是否为验证文本长度
Exit
else
begin
if Exit1.Text <> ValidText then //如果Edit中的文本长度符合要验证文本长度,再进行文本验证
begin
ShowMessge('error');
Edit1.SetFocuse;
end
end;
 
怎么还没解决?想解决我等会儿做,现在没时间。
 
function TForm5.isnum(s: string): boolean;
const alpha=['A'..'Z','a'..'z'];
alphanum=alpha+['0'..'9'] ;
var i,j:integer;
begin
result:=false;
i:=length(s);
for j:=1 to i do
if not (s[j] in alphanum) then
exit;
result:=false;
end;
 
多人接受答案了。
 

Similar threads

回复
0
查看
804
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部