OnKeyPress事件无作用?!在线等待…………

zbc 2002-03-21 09:40:37
我有一个文本编辑框, 我希望输入时,只有0-9的数字能输入进去,可是我在它的OnKeyPress事件里写如下代码时,却还能输入字母!


void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if (Key>='0'&&Key<='9')
Edit1->Text = Edit1->Text + Key;
}
却是为何?!
...全文
59 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zbc 2002-03-22
  • 打赏
  • 举报
回复
各位仁兄,谢谢,但是问题暂时没有得到解决的!
上面CCLIS(业余编程苦不苦?) 所说的方法还是不行, 小弟急啊!
zbc 2002-03-22
  • 打赏
  • 举报
回复
不好意思!下一个问题吧,这个问题只有10分, 一个给5分的话太寒酸, 下一个问题一定照顾楼上这位仁兄!谢谢您的关注!
pp616 2002-03-22
  • 打赏
  • 举报
回复
呵呵。我来帮你吧。
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if (Key<'0'||Key>'9')
{
Key = 0;
ReleaseCapture();
}
}
记得给分啊。嘻嘻。
zbc 2002-03-22
  • 打赏
  • 举报
回复
楼上兄弟高!这么一点问题解决! 佩服!
Behard 2002-03-22
  • 打赏
  • 举报
回复
if (Key != 8 && (Key<'0' || Key>'9'))Key = 0;
shadowstar 2002-03-21
  • 打赏
  • 举报
回复
//我明白你的意思,但是如果键入的是退格或是删除呢?

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
static AnsiString Text = Edit1->Text; //保存初值
if (!Edit1->Text.IsEmpty())
Edit1->Text.ToInt();    //如果不是一个整形会抛出异常
Edit1->Text = Edit1->Text + Key; //保存当前Edit1内容
}
unforget 2002-03-21
  • 打赏
  • 举报
回复
用MaskEdit可以很方便的解决这个问题
大大怪老张 2002-03-21
  • 打赏
  • 举报
回复
用MaskEdit吧,简单!

CCLIS(业余编程苦不苦?) 说的也可以
Cbfan 2002-03-21
  • 打赏
  • 举报
回复
为什么不用 RichEdit呢?做一个规则即可,非常简单。而且不会出现异常。
CCLIS 2002-03-21
  • 打赏
  • 举报
回复
改写成如下试试看:

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if (Key<'0'||Key>'9')
Key = 0;

还有,KEY的返回值是不是‘0’或‘9’,你再查一下键码表。

13,826

社区成员

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

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