onkeypress
if not (key in ['0'..'9']) then
begin
  key:=#0;
end;

解决方案 »

  1.   

    在OnChange事件中procedure TMainForm.InputEditChange(Sender: TObject);
    begin  //只输入数字的编辑框
      try
        if (Sender as TEdit).Text<>'' then StrToFloat(TEdit(Sender).Text);
      except
        MessageDlg('请注意所输入字符的正确性'+#13+'    "'+TEdit(Sender).Text+'"',
                  mtWarning,[mbOk],0);
        TEdit(Sender).SelectAll;
        end;
      end;
    end;
      

  2.   

    在KEYPRESS事件里面限制就可以了
      

  3.   

    关于输入数字的几点注意:
    数字有正负,有一般形式,指数形式,单纯的在KEYPRESS,ONKEYDOWN中
    判断是否0-9只能判断是正整数,这是其一;加入小数点和字母e或^,在加入
    +、-当然会好一些,但是你还要考虑多个小数点,或多个加减号——
    这在ONKEYDOWN中是可以接受的——的问题,这是其二;还有Cut-Copy-Paste的问题,这是其三。
        所以如果要完整的解决这个问题,是要做一个函数的。如果想简单地解决,
    用StrToFloat来转换并引发一个异常处理,是比较全面的考虑。