delphi中edit在全角半角输入状态下都不能输入标点符号,该怎么实现呢?

RT。换句话说,这个edit只能输入中英文和数字,其他的不能输入。望大家指教,谢谢
if ord(key)>128 then Exit;
if not (Key in['A'..'Z','a'..'z','0'..'9',#8]) then
begin
key:=#0;
end;
我写的在半角输入状态下能达到效果,但是在全角输入状态下又可以输入标点符号,求指点
最新回答
地球另一端的梦

2024-04-14 05:54:14

比较聪明的办法,是用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^
烟酉

2024-04-14 01:37:39

比较笨的一种办法是,将你想要过滤的标点符号,在KeyPress的事件里加入:

// 比如你要删掉'*','&

if (key in ['*','&']) then key:=#0;
追问
这方法试过 行不通啊。例如在全角输入状态下输入';'就会报类型错误
追答
报类型错误?不太清楚你的delphi版本,我用的delphi2010没有报这个错误。

此外,对于中文标点的过滤,你可以这样写:

if key=',' or key=';' then key := #0;
爱了。。散了

2024-04-14 17:34:37

你可以把这些标点符号的对应的key值 做成集合 在按键盘的时候 判断这个按下去的key值是否在集合中

注:全角和半角的key值有所不同
意志以颓废

2024-04-14 03:59:56

用 TMaskEdit 可以在 EditMask 属性中灵活限制输入内容。
追问
这个我也想过 但是EditMask 我只会限制只能输入英文和数字 但是不知道怎么让它也能输入中文,请指教
追答
要根据具体的输入格式决定,如果是少量符号的限制,用键盘按下事件处理。
帕嘉音

2024-04-14 19:19:18

在ONCHANG里遍历整个串的每个字节进行校验。
写在按键事件里面,用复制、粘贴是可以绕开的。