CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

Edit控件的输入限制!请各位高手过来指导呀!

楼主lzking(哲痞子)2002-04-04 12:40:07 在 C++ Builder / 基础类 提问

Edit控件怎样才能限制输入的类型和长度呢?  
  比如说我要输入数字,长度不能超过5!  
  请问怎么实现呀?  
  问题点数:20、回复次数:15Top

1 楼dzt1(黑牛)回复于 2002-04-04 12:58:38 得分 5

在Edit的OnPress事件中加入  
  if(Key<=57&&Key>=48)return;else   Key=0;  
  就可以限制只是输入数字。  
  长度:只要在他的属性框maxLength中修改就可以了。Top

2 楼playmud((猪头流氓)(抵制日货)(热烈庆祝火箭输球))回复于 2002-04-04 13:04:11 得分 0

正点Top

3 楼jishiping(JSP 季世平)回复于 2002-04-04 13:08:15 得分 5

限制输入的长度:  
          Edit1->MaxLength   =   5;  
  只允许输入数字:  
  SetWindowLong(Edit1->Handle,   GWL_STYLE,   ES_NUMBER  
          |GetWindowLong(Edit1->Handle,   GWL_STYLE));  
  Top

4 楼jishiping(JSP 季世平)回复于 2002-04-04 13:12:00 得分 0

DZT1(黑牛)   :  
  只在Edit的OnPress事件中加入  
  if(Key<=57&&Key>=48)return;else   Key=0;  
  是不够的,用户可以从剪贴簿里剪贴字母。  
   
  Top

5 楼kingcaiyao(aking)回复于 2002-04-04 13:23:14 得分 5

写出完整的代码:  
  void   __fastcall   TForm1::Edit1KeyDown(TObject   *Sender,WORD   &Key,TShiftState   Shift)  
  {  
        if(Key<0x30   ||   Key>0x39)  
        {  
                Key=0;  
        }  
        AnsiString   S=Edit1->Text;  
        if(S.Length()>5)  
        {  
              Application->MessageBox("The   length   of   text   must   be   equal   or   less   than   5","Error",MB_OK+MB_ICONERROR);  
              Edit1->Text=S.SubString(1,5);  
        }  
  }Top

6 楼kingcaiyao(aking)回复于 2002-04-04 13:28:55 得分 0

上面写错了,上面的代码记得写在OnKeyPress中。Top

7 楼phenix_jjg(好朋友天天见)回复于 2002-04-04 13:38:46 得分 3

你也可以考虑一下MaskEdit控件,可以设置掩码,可以对输入的字符进行过滤。  
  长度可以自定义。  
  至于你一定要使用Edit控件的话,我同意   jishiping(JSP)的说法。  
  Top

8 楼kingcaiyao(aking)回复于 2002-04-04 13:43:03 得分 2

如果担心用户通过Ctrl+C/Ctrl+V进行剪切或粘贴,可以这两对组合键屏蔽。Top

9 楼TR@SOE()回复于 2002-04-04 14:23:20 得分 0

Please   do   not   ask   duplicate   questions.Top

10 楼francohe(孤火)回复于 2002-04-04 14:39:39 得分 0

限制输入长度可以设置属性:Edit1->MaxLength   =   5  
  对限制输入的字符可以在获取Edit1->Text是进行判断,也可以在输入时逐个字符判断  
     
  Top

11 楼fbyang(fbyang)回复于 2002-04-04 15:18:36 得分 0

分分吧!你用楼上各位的方法,我觉得完全可以了Top

12 楼mikesome()回复于 2002-04-04 15:31:56 得分 0

别急着给分  
  贴主想对用户输入进行限制却用Edit,本身就不是一个好习惯  
  我认为如果要对用户输入进行限制,用MaskEdit是最好的(详见帮助)  
  MaskEdit设置好后,如果用户输入不符合要求,根本就不能输入  
  无需主程序去管Top

13 楼mikesome()回复于 2002-04-04 15:33:26 得分 0

比方你用maskedit,在EditMask属性里输入99999  
  那么用户在这个maskedit框就只能输入5位以下的数字,其他均无法输入Top

14 楼kingcaiyao(aking)回复于 2002-04-04 15:42:54 得分 0

To   mikesome:  
  试图限制用户的输入,这只会使自已的程序更加严谨,这不是习惯的问题,而是在很多的实际应用中的确要用到。Top

15 楼jie_zh(张三)回复于 2002-04-04 15:45:00 得分 0

maskedit中如果要输入小数呢?设成####.##或9999.99显示出的格式很难看,怎么办呢?Top

相关问题

  • 怎么控制edit控件输入
  • 在edit控件中键盘输入,为什么edit控件不能响应(不能输入)?
  • 在edit控件输入数字时,怎样能够限制输入的位数?
  • 初级问题:怎样在EDIT BOX控件中输入ENTER
  • 怎么使一个edit控件的输入只能是数字?
  • 如何使BC++5.0里Edit控件只能输入数字
  • Edit控件中如何分成几个区域来输入?
  • 怎样限制edit控件只能输入数字?
  • 如何使EDIT控件内只输入数字?
  • 对edit控件输入后按enter键产生什么事件?

关键词

  • 控件
  • 字符
  • 用户
  • 属性
  • 数字
  • 输入
  • 限制
  • maskedit
  • edit
  • 长度

得分解答快速导航

  • 帖主:lzking
  • dzt1
  • jishiping
  • kingcaiyao
  • phenix_jjg
  • kingcaiyao

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo