我在一个TEdit控件的keypress事件加入如下代码
if not (( key in ['0'..'9']) or (key =#8) or (key=#46)) then  key:=#0;
为什么这个控件还能输入中文
请遇到类似问题的大侠帮忙.

解决方案 »

  1.   

    我觉得可能是因为输入中文是通过中文输入法输入的,可能不直接触发KeyPress事件。
    要判断中文应该在OnChange事件里,中文是双字节字符,可以判断每一位的序号(Ord)是否大于127,如果是,就是中文。
      

  2.   

    紫光输不上
    另外
    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;
      

  3.   

    Corn1(玉米) 的做法 应该可以
      

  4.   

    以前看过一个老大写的程序,觉得用在这里也是可以的,呵呵,很巧妙的...
    procedure TForm1.Edit1Change(Sender: TObject);
    begin
        if length(widestring(Edit1.Text))<length(Edit1.Text) then
        showmessage('有汉字^_^');
    end;