Edit 的 OnKeyDown中
if not Key in ['0'..'9'] then
begin
  showMessage('请输入数字');
  Key := ''
end;或者Edit的OnChange中
try
  IntToStr(Edit.Text);
except
  showMessage('请输入数字');
  Edit.SetFocus;
end;

解决方案 »

  1.   

    在Edit1.OnChange()事件中加入代码,取刚输入的字符,判断是否在[‘0’...'9']内,若不在,可以将该字符自动删除,或者显示错误信息。
      

  2.   

    可在onchange中使用strtoint,同时捕捉异常,如果出错则提示输入数值
    不然就用TMaskEdit控件。如果用onkeypress中处理
        if not (key in [chr(8),'+','-','0'..'9']) then
          begin
            key:=chr(0);
            beep;
          end
        else
          begin
            if (length(edit1.text)>0) and (key in ['+','-']) then
              begin
                key:=chr(0);
                beep;
              end;
          end;
    chr(8)表示退格键