procedure TForm1.Edit1Exit(Sender: TObject);
var
  I: Integer;
begin
  if not TryStrToInt(TEdit(Sender).Text, I) then
    TEdit(Sender).SetFocus;
end;

解决方案 »

  1.   

    for i:=1 to length(edit1.text) do
      if (edit1.text[i] <'0' ) or ( edit1.text[i]>'9') then showmessage('err');
      

  2.   

    可惜delphi不支持正则表达式,要不然好多字符串的限制就太方便了!
      

  3.   

    定义一个函数
    function IsNumeric(Str_edit:string):boolean;
    var
      Int_edit :integer;
    begin
      try
        Int_edit := StrToInt(Str_edit);
        Result := True;
     except
       Result := False;
      end;
    end;
      

  4.   

    为什么要在edit失去焦点是判断
    我觉得在输入时判断比较好,或用地三方EDIT构件
      

  5.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
        if (ord(key)<48) or (ord(key)>57) then
      begin
        key:=#0;
      end;
    end;
      

  6.   

    function IsNumeric(Str_edit:string):boolean;
    var
      Int_edit :integer;
    begin
      try
        Int_edit := StrToInt(Str_edit);
        Result := True;
    except
      Result := False;
      end;
    end; 
      

  7.   

      大家虽然判断了用键盘输入的情况,但没对鼠标粘贴文字的情况做考虑,
    我做了消息处理,做了个组件:TtzDigitEdit
    下载:http://tzdgg.freephp.digiro.net/MyCo.zip
    属性:Style,支持Integer,Float,Currency,Text.           多多指教!--男人:)
      

  8.   

    procedure TForm1.Edit1Exit(Sender: TObject);
    begin
    try
      StrToInt(Edit1.Text);
    except
      ShowMessage('请输入数字');
    end;
    这样可以的,要在离开Delphi的IDE时候才行,要不会有异常。
      

  9.   

    呵呵 昨天正好有同学问过这个问题 不过他的意思是判断 inputbox 里的输入
      

  10.   

    var
      s:string;
    begin
      s:=edit1.text;
      for i:=1 to length(s) do begin
        if s[i] in [0..9] then 
          count:=count+1;
        end;
       form1.cation:='ni you '+ inttostr(count)+'ge shu zi';
    z这样就可以解决了
      

  11.   

    同意楼上,不过有点错误 
    在使用s的使用先截掉多余的空格s := trim(edit1.text);
    判断时if s[i] in ['0'..'9'] then
      

  12.   

    回复人: zswang(伴水)(需要充充电) (  ) 信誉:97  说的对,简单明了。 如果看不懂可以这样:
      try
      strtoint(Edit.text);
      except
      showmessage('err');
      Edit.setfocus;
      end;
      

  13.   

    to newyj(老鬼) 
    for i:=1 to length(edit1.text) do
      if (edit1.text[i] <'0' ) or ( edit1.text[i]>'9') then showmessage('err'); 
     
    似乎把 小数点 给排除掉了,不太好吧?