Edit框中如何限制只能输入正整数且最大不能超过65535!? ( 积分: 200 )

  • 主题发起人 主题发起人 高手贵姓
  • 开始时间 开始时间
这个可用:<br>OnKeyPress里写:<br>begin<br>&nbsp;&nbsp;if&nbsp;(not&nbsp;(Key&nbsp;in&nbsp;['0'..'9',#8]))&nbsp;or&nbsp;(StrToIntDef(TEdit(Sender).Text+Key,0)&gt;High(Word))&nbsp;then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;Key:=#0;<br>&nbsp;&nbsp;&nbsp;&nbsp;Beep();<br>&nbsp;&nbsp;end;<br>end;
 
呵呵,我认为在onkeypress事件中判断不准确,因为它是事前判断,如果在输入该数字之前,不大于某值时,则可以输入该数字,当该数字输入后,是否大于某值,它就无能为力了.所以,最好还是在onchange事件中判断是否大于某值,在onkeypress事件中限制只能输入数字.二者配合使用.
 
事前判断也没关系,注意这里:<br>StrToIntDef(TEdit(Sender).Text+Key<br>而且在onchange中判断,效果不太好,会把之前输入的内容清空<br>参考一些商业软件,一般在onKeyPress中处理,输入不合法只是“咚”一声(Beep),不会清除之前的合法数据
 
代码测试过:<br>procedure&nbsp;TForm1.Edit1Change(Sender:&nbsp;TObject);<br>var<br>&nbsp;&nbsp;i:&nbsp;Integer;<br>&nbsp;&nbsp;s:string;<br>begin<br>&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;:=&nbsp;StrToInt(Edit1.Text);<br>&nbsp;&nbsp;except<br>&nbsp;&nbsp;&nbsp;&nbsp;exit;<br>&nbsp;&nbsp;end;<br>&nbsp;&nbsp;if&nbsp;i&nbsp;&gt;&nbsp;65535&nbsp;then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;Edit1.Text:='';<br>&nbsp;&nbsp;&nbsp;&nbsp;showmessage('输入数值过大,请重新输入');<br>&nbsp;&nbsp;end;<br><br>end;<br><br>procedure&nbsp;TForm1.Edit1KeyPress(Sender:&nbsp;TObject;&nbsp;var&nbsp;Key:&nbsp;Char);<br>begin<br>if&nbsp;not(key&nbsp;in&nbsp;['0'..'9','.',char(VK_BACK)])then&nbsp;Key&nbsp;:=&nbsp;#0;<br>end;
 
liuchong的方法才是最好的.<br>其他方法可能在功能上是实现了.但是运行起来的效果一定不会很好.
 
接受答案了.
 

Similar threads

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