怎样限制TEdit框只能输入数字?

wilsonloveada 2004-09-28 04:11:18
高手求救,怎样限制TEdit框只能输入数字或只能输入英文大小写字母?
...全文
220 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
nance224 2004-09-28
  • 打赏
  • 举报
回复
在KEYPRESS事件内
if((Key<'0'||Key>'9') && Key!=VK_BACK && Key!=VK_DELETE&&Key!='.')
Key=0;
UFOBH 2004-09-28
  • 打赏
  • 举报
回复
void __fastcall TInformationEditForm::Edit11KeyPress(TObject *Sender,
char &Key)
{
if(!((Key<='9'&&Key>='0')||(Key==VK_BACK)||(Key==VK_DELETE)||(Key==VK_SNAPSHOT)))
{
Key=NULL;
}
}
danny800301 2004-09-28
  • 打赏
  • 举报
回复
为什么不用maskedit呢?
happyct 2004-09-28
  • 打赏
  • 举报
回复
问了几百遍的问题了,随便查一下一堆

方法一:
void __fastcall TForm1::Edit1OnKeyPress(TObject *Sender, char &Key)
{
AnsiString InputKey = Key;
AnsiString ValidKey = AnsiString("0123456789.");
if (ValidKey.Pos(InputKey) == 0) {
Key = 0;
}
}


方法二:

引用::
老生常谈的问题,用上面的方法也可以,但如果你的窗体上有多个要求只能输入数据的EDIT,那要为每个EDIT都写一个OnKeyPress事件,那样岂不是太麻烦了,还是做一个只能输入的EDIT的控件吧:
class TMyEdit:public TEdit
{
private:
protected:
virtual void __fastcall CreateParams(TCreateParams Params);
};
.cpp File
void __fastcall TMyEdit::CreateParams(TCreateParams Params)
{
TEdit::CreateParams(Params);
Params.Style|=ES_NUMBER;
}
方法三:
SetWindowLong(Edit1->Handle,GWL_STYLE,GetWindowLong(Edit1->Handle,GWL_STYLE)|ES_NUMBER) ;
Nomad_man 2004-09-28
  • 打赏
  • 举报
回复
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if(!isdigit(Key))
{
Key = 0;
}

}
98ly 2004-09-28
  • 打赏
  • 举报
回复
可以在TEdit中的KeyPress事件中进行处理.
1、若只能输入字母则处理
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if(((Key<=64))||((Key>=32)&&(Key<=47))||((Key>=91)&&(Key<=96))||(Key>=123))
{
Key=0;
return;
}
}
2、若只能输入数字

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if(((Key<=47)||(Key>=58)))
{
Key=0;
return;
}
}
经过程序验证过,应该没问题。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧