奇怪的问题,如何使用户在TEdit中只输入数字?为何在VB中行在BCB中不行?

bitfan 2002-08-10 05:19:44
我在窗体中放了一个编辑框,想让用户只输入数字,屏蔽掉其它所有按键,我在KeyDown中这样写:
void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{

if(!((Key>48)&&(Key<59))) //0~9的ASCII码
Key=0;
}
但在编辑框中仍然显示用户输入的其它字符,比如“a”,这是怎么回事?
我用的是BCB6,是不是一个BUG?
同样的方法我在VB中用过,没问题。
...全文
162 10 打赏 收藏 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
susanjona 2003-05-08
  • 打赏
  • 举报
回复
?是吧,sncel(地狱情人)的方法对吗?
如果你第一次输入的是一个字符,它会报错,可第二个它就不报了,就由你输了
还是只有我会出这样的问题啊?
bitfan 2002-08-10
  • 打赏
  • 举报
回复
呵呵,谢诸位大侠鼎力相助。
sncel(地狱情人)的方法很好,但不能输入小数点。
Ernest_tong(tong) 指出的要点很重要,在KeyPress事件中判断按键,用Key=0取消不必要的按键。
大家都有分!
SimonDW 2002-08-10
  • 打赏
  • 举报
回复
封装方式的问题,作为window的基本资源,是可以设只填数字的,
但borland封装时没将该属性包含。
jishiping 2002-08-10
  • 打赏
  • 举报
回复
上面的 KeyPress,KeyDown 不能拦截用户用鼠标从剪贴簿粘贴其它字符,
但是却又拦截了用户用键盘从剪贴簿粘贴数字,同时用户又不能用Del,
Back键删除字符。最简单,最保险的方法,就是 sncel(地狱情人) 说的
方法:
SetWindowLong(Edit1->Handle, GWL_STYLE, GetWindowLong(Edit1->
Handle,GWL_STYLE)|ES_NUMBER);

Ernest_tong 2002-08-10
  • 打赏
  • 举报
回复
在KeyPress 事件中使用才有效。
wxcwuxuchun 2002-08-10
  • 打赏
  • 举报
回复
同意上面的方法,最简单!
sncel 2002-08-10
  • 打赏
  • 举报
回复
这样就可以了。。
SetWindowLong(txtEdit3->Handle,GWL_STYLE,GetWindowLong(txtEdit3->Handle, GWL_STYLE) + ES_NUMBER);
COKING 2002-08-10
  • 打赏
  • 举报
回复
if(Key==VK_RETURN||Key==VK_DELETE) return;
if (Key<'1'||Key>'9') Key=0;
annkie 2002-08-10
  • 打赏
  • 举报
回复
上面写错了:
if(!((Key>48)&&(Key<59)))
Edit1->Text =Edit1->Text.SubString(1,Edit1->Text.Trim().Length()-1);
annkie 2002-08-10
  • 打赏
  • 举报
回复
if(!((Key>48)&&(Key<59)))
Edit1->Text =Edit1->Text.SubString(1,Edit1->Text.Trim.Length()-1);
附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[领航车(leader)] · 训练集:414 张 · 验证集:39 张 · 测试集:20 张 · 总计:473 张 该数据集聚焦于室内走廊环境中对领航车的精准识别与定位,具备高度场景专一性与实际应用价值。图像采集于光线均匀、结构规整的建筑内部通道,背景干扰因素少,有利于模型在复杂环境下的目标提取能力训练。领航车作为核心检测对象,在不同距离和角度下均被清晰标注,为智能导航系统、自动化引导设备等提供可靠的数据支持。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 77 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9950** mAP50-95 | 0.9141 Precision | 0.9985 Recall | 1.0000 train/box_loss | 0.5224 train/cls_loss | 0.2526 val/box_loss | 0.4307 val/cls_loss | 0.1407 【训练过程分析】 77 轮训练后 mAP50 达到 0.9950,模型收敛良好。Loss 曲线前段快速下降,后段趋于平稳,val_loss 无反弹,没有明显过拟合。mAP50-95 为 0.9141,和 mAP50 差距仅 0.08,框的定位精度也很扎实。 【模型性能评估】 Precision 0.9985、Recall 1.000... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

13,871

社区成员

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

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