作一个过程:
procedure TMainForm.PDshuzi(var key: char);
begin
  if not (key in ['0'..'9', '.', Chr(VK_RETURN), chr(vk_back)]) then
    begin
      key := #0;
      application.messagebox('请输入整数或小数', '提示', mb_ok + mb_iconstop);
    end;
end;

解决方案 »

  1.   

    tedit的onkeypress事件中判断键值:
       if key<48 or key>57 then
          key=0
    大概这个思路,具体那些键值我也忘了:)
      

  2.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
       if not (key in [#8,#13,'0'..'9','.','-']) then
          key:=chr(0);
    end;
      

  3.   

    这个小问题其实挺麻烦的。onkeypress控制不了粘贴。
      

  4.   

    可以用val函数写在ONExit这个事件里就可以控制粘贴了!
      

  5.   

    在OnExit中把关,尝试转为数值, 若失败说明有别的字符.
    try
      StrToInt64(Edit.text);
    except
      showMessage('some thing wrong!');
      abort;
    end;  
    如果是浮点数, 则不用StrToInt,要用别的函数, 具体自已找找StrTo??
      

  6.   

    用maskedit就行了,设置其输入的属性
      

  7.   

    MaskEdit很不友好,光标是独立的。
    OnExit中把关也很不完美。
    VFP可能应该算破烂,但它的Text控件真让人怀念,称得上完美。按理说,在Delphi上实现应该也很容易(对borland来说)。