我在一个TEdit控件的keypress事件加入如下代码
if not (( key in ['0'..'9']) or (key =#8) or (key=#46)) then key:=#0;
为什么这个控件还能输入中文
请遇到类似问题的大侠帮忙.
if not (( key in ['0'..'9']) or (key =#8) or (key=#46)) then key:=#0;
为什么这个控件还能输入中文
请遇到类似问题的大侠帮忙.
解决方案 »
- 毕业3年有点想法
- 用数据感知组件和不用数据感知组件的区别?
- Delphi2005装DbGrideh装不上?
- 动态调用a.dll中的b(long a) 返回数值类型long,请问如何写啊???
- 连接动态库时为什么总出问题?
- 探索软件开发的速度:发发救济粮
- 高分求购"Toolbar skin+"控件?收到安装成功后马上给分?
- 请问DELPHI里面的动态数组在使用时要注意什么?
- 关于SQL Server远程连接的问题
- 请教各位老鸟,编写一个OICQ需要学习那些软件(有人告诉我这个问题应该在这里问)
- ????那位同仁,救救我吧!程序运行时报错:Access Violation at address 00000000.Read of address 00000000
- 在123.aspx (asp.net)中有一个delphi做的active from 通过123.aspx?id=123请问我在active from 中怎样来读取id的值
要判断中文应该在OnChange事件里,中文是双字节字符,可以判断每一位的序号(Ord)是否大于127,如果是,就是中文。
另外
if not (( key in ['0'..'9']) or (key =#8) or (key=#46)) then key:=#0;
可以简化为
if not ( key in ['0'..'9',#8,#46]) then key:=#0;
procedure TForm1.Edit1Change(Sender: TObject);
begin
if length(widestring(Edit1.Text))<length(Edit1.Text) then
showmessage('有汉字^_^');
end;