注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

gb.qin

A Man's心靈的港灣

 
 
 

日志

 
 

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

2009-11-09 10:47:15|  分类: Delphi |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

    有些时候需要限制程序里的文本框(这里指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.  //第一位不能為1-9同小數點
  25.   //if (CharInSet(Key, ['1'..'9', '.', #8]) and (edt.SelStart = 0)) then Key := #0; 
  26.   
  27.   // 只能输入一个小数点  
  28.   if (Key = '.'and (Pos('.', str ) > 0then Key := #0;  
  29.   
  30.   // 不能在前面插入 0 (输入第一个 0 时除外)  
  31.   if (Key = '0'and (edt.SelStart = 0and (str <> ''then Key := #0;  
  32.   
  33.   // 不能连续输入 0  
  34.   if (Key = '0'and (LeftStr(str, 1) = '0'and (Pos('.', str) <= 0then Key := #0;  
  35. end
  评论这张
 
阅读(568)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017