delphi中edit在全角半角输入状态下都不能输入标点符号,该怎么实现呢?
RT。换句话说,这个edit只能输入中英文和数字,其他的不能输入。望大家指教,谢谢iford(key)>128thenExit;ifnot(Keyin['A'..'Z',...
RT。换句话说,这个edit只能输入中英文和数字,其他的不能输入。望大家指教,谢谢
if ord(key)>128 then Exit;
if not (Key in['A'..'Z','a'..'z','0'..'9',#8]) then
begin
key:=#0;
end;
我写的在半角输入状态下能达到效果,但是在全角输入状态下又可以输入标点符号,求指点 展开
if ord(key)>128 then Exit;
if not (Key in['A'..'Z','a'..'z','0'..'9',#8]) then
begin
key:=#0;
end;
我写的在半角输入状态下能达到效果,但是在全角输入状态下又可以输入标点符号,求指点 展开
展开全部
比较聪明的办法,是用Delphi2010中的Edit,有个属性:NumbersOnly,设置为True就可以了
如果用的是Delphi7,可以在Edit中的OnChange事件中输入以下代码:(抄的Delphi2010中的代码)
SetWindowLong(Edit1.Handle, GWL_STYLE, GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_NUMBER);
同时,要在窗体的FormCreate事件中把Edit清空一下。
Edit1.Text:='';
测试完毕。
不好意思,看错了。我以为只有数字呢。^O^
如果用的是Delphi7,可以在Edit中的OnChange事件中输入以下代码:(抄的Delphi2010中的代码)
SetWindowLong(Edit1.Handle, GWL_STYLE, GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_NUMBER);
同时,要在窗体的FormCreate事件中把Edit清空一下。
Edit1.Text:='';
测试完毕。
不好意思,看错了。我以为只有数字呢。^O^
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-08-06 · 知道合伙人软件行家
关注
展开全部
比较笨的一种办法是,将你想要过滤的标点符号,在KeyPress的事件里加入:
// 比如你要删掉'*','&
if (key in ['*','&']) then key:=#0;
// 比如你要删掉'*','&
if (key in ['*','&']) then key:=#0;
追问
这方法试过 行不通啊。例如在全角输入状态下输入';'就会报类型错误
追答
报类型错误?不太清楚你的delphi版本,我用的delphi2010没有报这个错误。
此外,对于中文标点的过滤,你可以这样写:
if key=',' or key=';' then key := #0;
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-08-07
展开全部
你可以把这些标点符号的对应的key值 做成集合 在按键盘的时候 判断这个按下去的key值是否在集合中
注:全角和半角的key值有所不同
注:全角和半角的key值有所不同
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用 TMaskEdit 可以在 EditMask 属性中灵活限制输入内容。
追问
这个我也想过 但是EditMask 我只会限制只能输入英文和数字 但是不知道怎么让它也能输入中文,请指教
追答
要根据具体的输入格式决定,如果是少量符号的限制,用键盘按下事件处理。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在ONCHANG里遍历整个串的每个字节进行校验。
写在按键事件里面,用复制、粘贴是可以绕开的。
写在按键事件里面,用复制、粘贴是可以绕开的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询