Edit控件的输入限制!请各位高手过来指导呀!
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




