if not(key in [#48..#57] then
begin
key:=#0;
end;

解决方案 »

  1.   

    edit 中的mask可以控制输入
    如mask='yyyy-mm-dd'
      

  2.   

    在edit 的on exit事件中判断
      

  3.   

    l 限制中只能输入数字:
    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;
      

  4.   

    只限数字时
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if not(key in['0'..'9']) then
                   key:=chr(0);
    end;