procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
  AStr:String;
begin
  AStr := Edit1.Text;
  case key of
    '0'..'9':Key:=Key;             //只能输入数字
    '.':                           //输入小数时判断小数点
        if pos('.',AStr)<>0 then
          Key:=#0
        else
          Key:=Key;
  else
    Key:=#0;
  end;
end;

解决方案 »

  1.   

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

  2.   

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

  3.   

    在onchange时间中
    if (Key<'0') or (Key > '9') then Key := 0;
      

  4.   

    楼上的,写错了,应该是KeyPress:)
      

  5.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    var
      vNumber: Extended;
    begin
      if not TryStrToFloat(TEdit(Sender).Text + Key, vNumber) then
        Key := #0;
    end; 
      

  6.   

    这样是可以呀,不过我的backspace...和enter键不能用了。。?
      

  7.   

    if not (key in ['0'..'9','.',#8]) then
    begin
      key := #0;
      showmessage('请您勿必输入0-9之间的数字!');
    end;
      

  8.   

    if not (key in ['0'..'9','.',#8,#13]) then   //#8为backspace,#13为Enter
    begin
      key := #0;
      showmessage('请您勿必输入0-9之间的数字!');
    end; 
      

  9.   

    if (key<0) or (key>9) then
     key:=0;
    很简单吧,在keypress
      

  10.   

    □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
    □□□□□■□■□■□□□□□■□□■□□□□□□□□□□□□□□□□□□
    □■■■■□□■□□■□□□□■■■■■■■■□□□□□□□□□□□□□□
    □□□□■□□■□□□□□□■□□□■□□□□□□□□□□□□□□□□□□
    □■■■■■■■■■■■□■■■■■■■■■■■□□□□□□□□□□□□□
    □□□□■□□■□□□□□□□■□□□□□■□□□□□□□□□□□□□□□
    □□□□■□■■□□■□□□□■■■■■■■□□□□□□□□□□□□□□□
    □□□■■■□■□■□□□□□□□■□■□□□□□□□□□■■□□□□□□
    □■■□■□□□■□□□□□■■■■□■■■■□□□□□□■■□□□□□□
    □□□□■□□■■□□■□□□□□■□■□□□□□□□□□■■□□□□□□
    □□□□■■■□□■□■□■■■■■□■■■■■□□□□■■□□□□□□□
    □□■■■□□□□□■■□□□□□■□■□□□□□□□□□□□□□□□□□
    □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
    □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
    □□□□□■■□■□□□□□□□□■□□□□□□□□■■■■■■■■■□□
    □■■■■□□□■□□□□■■■■■■■■■■■□□□□□□□□□■□□□
    □□□□■□□□■□□□□□□□■□□□■□□□□□□□□□□□■□□□□
    □■■■■■■■■□□□□□□■□□□□□■□□□□□□□□■■□□□□□
    □□□□■□□□■□□□□□■□■■■■■□■■□□□□□□■□□□□□□
    □□□□■□□□■□□□□■□□■□□□□□□□□□□□□□■□□□□□□
    □□■■■■■□■□□□□□□□■■■■■□□□□□□□□□■□□□□□□
    □□■□□□■□■□□□□□□□■□□□□□□□□□□□□□■□□□□□□
    □□■□□□■□■□□■□■■■■■■■■■■■□□□□□□■□□□□□□
    □□■■■■■□■□□■□□□□■□□□■□□□□□□□□□■□□□□□□
    □□■□□□■□■■■■□□□■■■■■■■□□□□□□■■■□□□□□□
    □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□ I服了YOU.
      

  11.   

    呵呵!好乱啊!
    用:
    回复人: ll7777(阿皓) (2001-11-29 11:46:35)  得0分 
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if not key in ['0'..'9'] then
        key:=#0;
    end;  就可以了!
      

  12.   

    procedure EditChangeForInteger(Sender: TObject);
    var
      edtTemp: TEdit;
      iTemp: Integer;
    begin
      //使用的时候,在Edit的OnChange事件中加入EditChangeForInteger(Sender);  //根据类型转换是否出异常来判断是否整数
      edtTemp := (Sender as TEdit);
      try
        iTemp := StrToInt(edtTemp.Text);
        if iTemp < 0 then
          edtTemp.Text := '0';
      except
        //
        edtTemp.Text := Copy(edtTemp.Text,0,Length(edtTemp.Text)-1);
        if edtTemp.Text = '' then edtTemp.Text := '0';
        edtTemp.SelStart := Length(edtTemp.Text);  end;end;
      

  13.   

    在KeyPress内if key in ['0'..'9',#13,'.',#8,'-']即可
      

  14.   

    兄弟我来告你吧。。procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    这方法不行,因为用ctrl+v贴过去就不行了。用maskedit组件做吧。很容易的,一看就会。
      

  15.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if not (Key in ['0'..'9','.',Char(VK_BACK)]) then
        Key := #0;
      if (Pos('.', Edit1.Text) > 0) and (Key = '.') then Key := #0;
    end;
    另外,将Edit控件的弹出菜单屏蔽即可!(可以使用一个空弹出菜单,把编辑框的弹出菜单没为该菜单即可!