我知道是在KEYPRESS事件里写,但忘记怎么写的了,请大家帮忙!

解决方案 »

  1.   

    if key<'0' or key>'9'  then key=#0;
      

  2.   

    procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if((key < 49) or (key > 57)) then
        showmessage('请输入数字');
    end;
      

  3.   

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

  4.   

    if  not(Key in ['0'..'9']) then
        Key:=Char(0);
      

  5.   

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

  6.   

    用API比较好,不用在事件里面判断,节省CPU时间
    SetWindowLongedit1.Handle, GWL_STYLE,GetWindowLong(edMaxCount.Handle, GWL_STYLE) or ES_NUMBER);
      

  7.   

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

  8.   

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

  9.   

    keypress事件:
    case key of
     '0'..'9',#8,#13:
    else
      abort;
    end;
      

  10.   

    case key of
     '0'..'9',#8,'.',#13:
    else
      abort;
      

  11.   

    在TEdit的onKeyPress事件中:if not (key in['0'..'9',#8])then  key:=#0;#8代表退格键,最好加上此值。
      

  12.   

    julong88(宝蓝-啥都不会,就来学的。) 
     jakefj(夢幻天使)
    insert2003(高级打字员)
    这三个人说的都比较全面了,前面的人说的只能输入数字了,其他的时候都不可以了,比如说复制,粘贴,退格。所以楼主还是选择下面几个人的方法
      

  13.   

    我也一般选择:
    在TEdit的onKeyPress事件中:if not (key in['0'..'9',#8])then  key:=#0;  要不你想删除字符都难了,呵呵
      

  14.   

    在TEdit的onKeyPress事件中:  if not (Key in ['0'..'9','.',#8,#13]) then
        Key:=#0;
        if Key='.' then
        begin
            if (Pos('.',TEdit(Sender).Text)<>0)or(Length(TEdit(Sender).Text)=TEdit(Sender).SelLength)
                or(TEdit(Sender).SelStart=0) then
            Key:=#0;
        end;
      

  15.   

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

  16.   

    procedure TFrmmain.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if key<#48 or key>#57 then
        key:=#0;
    end;