if not ((key in ['0'..'9']) or (key=#13) or (key=#8)) then
    key:=#0;我这是在keypress中的代码,意思是只能输入数字,不能输入其它字符,但是它现在能输入汉字,
该如何解决?

解决方案 »

  1.   

    if not (key in ['0'..'9','.',#8,#13]) then key:=#0;
      

  2.   

    你就来个:
    if (key in[..........]) then//穷举键盘上的字符键,呵呵
      key := #0;
      

  3.   

    我想是可以通过ASCII码来判断的
      

  4.   

    弄个函数,
    function hzpd(s_e1:string):boolean;
    var
    i:integer;begin
    result:=false;
    for i:=0 to length(s_e1)-1 do
      begin
           if ord(s_e1[i])>=128 then
           begin
           result:=true;
           break;
           end;
       end;end;然后在
    procedure Tdwcx_form.Edit1Change(Sender: TObject);//判断EDIT1里输入的是不是汉字
    begin
         if NOT (hzpd(edit1.Text)) then
         begin
         SHOWMESSAGE('请输入汉字!');
         edit1.text:='';
         end;
    end;
      

  5.   

    if (not ((key in ['0'..'9']) or (key=#13) or (key=#8))) or (key>127) then
        key:=#0;
      

  6.   

    楼主试试在keypress里面这样写:我试了可以符合你的要求
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
     if not ((key in ['0'..'9']) or (key=#13) or (key=#8)) then
        key:=#0;end;
      

  7.   

    对啊  没什么毛病啊  是不是你把keypress事件 赋错对象了啊 我做过这样的事  看看Sender 是谁
      

  8.   

    if (not (key in['0'..'9'])) and (key<>#8) and (key<>#13) then
      begin
        key:=#0;
      end;你看可不可以