Delphi中限制文本框(TEdit)只能输入小数

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2011-01-28 11:48:33

有些时候需要限制程序里的文本框(这里指TEdit控件)里只能输入某些特定字符。比如说限制只能输入数字,这时可以设置
TEdit的NumbersOnly属性来实现,这里的TEdit将被限制为只能输入0到9这十个字符。那么,如果需要限制输入小数呢,
小数点被阻止了,所以这时不能使用NumbersOnly属性,另外也没有别的属性能实现的。那就只有自己来做!

限制输入,可以在OnKeyPress事件中来做。见如下代码:

  1. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);   
  2. var  
  3.   edt: TEdit;   
  4.   str: string;   
  5.   strL: string;   
  6.   strR: string;   
  7. begin  
  8.   // 获取当前文本内容, 注意要去掉选中部分(因为会被改写).   
  9.   edt := TEdit(Sender);   
  10.   str := edt.Text;   
  11.   if Length(edt.SelText) <> 0 then  
  12.   begin  
  13.     strL := LeftStr(edt.Text, edt.SelStart);   
  14.     strR := RightStr(edt.Text, Length(edt.Text) - edt.SelStart - edt.SelLength);   
  15.     str := strL + strR;   
  16.   end;   
  17.   
  18.   // 限制输入数字/小数点/退格键   
  19.   if not CharInSet(Key, ['0'..'9''.', #8]) then Key := #0;   
  20.   // not (Key in ['0'..'9', '.', #8])   
  21.   
  22.   // 第一位不能为小数点   
  23.   if (Key = '.'and (edt.SelStart = 0then Key := #0;   
  24.   
  25.   // 只能输入一个小数点   
  26.   if (Key = '.'and (Pos('.', str ) > 0then Key := #0;   
  27.   
  28.   // 不能在前面插入 0 (输入第一个 0 时除外)   
  29.   if (Key = '0'and (edt.SelStart = 0and (str <> ''then Key := #0;   
  30.   
  31.   // 不能连续输入 0   
  32.   if (Key = '0'and (LeftStr(str, 1) = '0'and (Pos('.', str) <= 0then Key := #0;   
  33. end;  



以上考虑到了比较多的情况,可以很好的限制输入小数。

如果程序里有很多的TEdit要做此限制,当然不必给每个控件写代码,把事件指定到同一个过程就行了。
来源;http://blog.csdn.net/JPEXE/archive/2009/04/10/4062235.aspx

Tags:

作者:佚名
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

广告位置B