delphi中如何限定edit框中的字符

我写16进制到10进制转换,要求框中只能输入0~9以及A~F,这个怎么限定?我还希望实现当输入小写的字母时自动转换为大写字母显示,这个怎么弄?还有个就是怎么限定edit框... 我写16进制到10进制转换,要求框中只能输入 0~9以及A~F,这个怎么限定?
我还希望实现当输入小写的字母时自动转换为大写字母显示,这个怎么弄?
还有个就是怎么限定edit框中的字符数量?因为超量的话也会报错。
展开
 我来答
HJ_3000
2011-05-31 · TA获得超过563个赞
知道小有建树答主
回答量:1264
采纳率:78%
帮助的人:45.4万
展开全部
Procedure TForm1.FormCreate(Sender: TObject);
Begin
Edit1.CharCase := ecUpperCase; //大写
End;

Procedure TForm1.Edit1KeyPress(Sender: TObject; Var Key: Char);
Begin
If Not (Key In ['0'..'9', 'a'..'f', 'A'..'F', #8]) Then //允许输入范围限制,#8退格
Begin
key := #0;
End;
End;

Procedure TForm1.Edit1ContextPopup(Sender: TObject; MousePos: TPoint;
Var Handled: Boolean);
Begin
Handled := True; //防止右键菜单的操作
End;
更多追问追答
追问
谢谢回答,现在第一个大小写问题是彻底解决了,但是后面那个编译后好像没有效果,输入时它还是会显示-----我在2个过程里分别加了showmessage(),结果没有弹出,说明没有被调用,不知道哪里写错了?
追答
以上3个过程都不是自定义的过程,都是控件的事件。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lh624423055
2011-05-31 · TA获得超过9068个赞
知道大有可为答主
回答量:1.2万
采纳率:6%
帮助的人:9232万
展开全部
在edit的change事件中加入判断ascii码并转换的语句
追问
我就是不知道怎么写所以才问的。。
追答
你的问题补充  后面那两个事件 选中控件 切换到事件面板 选择 keypress事件  双击就会自动创建了 如果你不嫌弃麻烦自己手动敲也可以 

下面的写的可能有点错

Procedure Edit1.KeyPress(Sender: TObject; Var Key: Char);
Begin
If Not (Key In ['0'..'9', 'a'..'f', 'A'..'F', #8]) Then //允许输入范围限制,#8退格
Begin
key := #0;
End;
End;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
北和笑0e
2011-06-01
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部
字符数量可以用控件本身属性:maxlength 来限定(注意情况设计期初始值),或者,再最终提交的时候,做一个检查,看字符长度
if length(self.Edit1.text)>10 then
begin
Application.MessageBox('XXXX超长!','提示');
self.Edit1.SetFocus;
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tcds30
2011-05-31 · TA获得超过131个赞
知道小有建树答主
回答量:218
采纳率:0%
帮助的人:116万
展开全部
吧控件所在窗孔的 keypreview 属性设为真,控件的 keypress 事件才会生效
追问
设置了,但是还是没用
追答
Procedure Edit1.KeyPress(Sender: TObject; Var Key: Char); 
你的这个过程声明是怎么回事?
是你复制过来的?还是敲得?敲错了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式