如何怎样调试呢?奇怪,怎么不行呢,运行后能输入任何字符串。
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
  begin
      if (not(key in ['0'..'9']))and (key<>#8) and (key<>#46)then
      begin
      beep;
      key:=#0;
      end;
  end;

解决方案 »

  1.   

    这个判断有问题啊,是可以输入任何字符串的.这样写吧:
     if not (key in['0'..'9',#46]) then
        begin
          if Key <> #8 then
            Key := char(0);
        end
      

  2.   

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

  3.   

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

  4.   

    在Edit1文本框的Events----OnKeyPress中写上Edit1KeyPress.
      

  5.   

    not (key in['0'..'9',#46,#8]) 不过楼主的代码,我测试是没问题的
      

  6.   

    C#.net中不用指定事件啊。原来Delphi还要指定事件啊。
      

  7.   


    VS中的C#直接代码就OK!
    Delphi中多了一个到控件的events属性加个事件。呵呵!不知道我这样说会不会很糊涂啊!
    呵呵!我也是刚玩Delphi的。。还在了解之中。
      

  8.   

    各位大侠,能不能给个之能输入数字and小数点的例子
      

  9.   

    在edit的KeyPress事件双击,写入下面的代码:procedure Tform1.Edit1KeyPress(Sender: Tobject; var Key:char);   
    begin   
      if not (key in ['0'..'9',#8,#46]) then   
      begin   
        Key:=#0;   
        Beep; {发出警告声}  
      end;   
    end;  
      

  10.   

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

  11.   

    .JAVA叫監聽,C#中應該是委托,DELPHI中就用事件(這也是WINDOWS的消息處理機制的原理)呵呵。
      

  12.   

    很简单:procedure Tform1.Edit1KeyPress(Sender: Tobject; var Key:char);   
    begin   
      if not (key in ['0'..'9','.',#8,#46]) then   
      begin   
        Key:=#0;   
        Beep; {发出警告声}  
      end;   
    end;
      

  13.   

    楼主改一下基本可以使用了:procedure TForm1.edt1KeyPress(Sender: TObject; var Key: Char);
    var
      len: Integer;
    begin
      len:=4;  //四位小数
      if TEdit(TEdit(Sender)).SelLength = length(TEdit(Sender).Text) then
        TEdit(Sender).Clear;
      if not (key in ['0'..'9', '.', '-', #13]) then
      begin
        if Key <> #8 then
          Key := char(0);
      end
      else begin
        if Key = '.' then
        begin
          if pos('.', TEdit(Sender).Text) <> 0 then
            Key := char(0)
        end
        else
          if Key = '-' then
          begin
            if trim(TEdit(Sender).Text) <> '' then
              Key := char(0)
          end
          else
          begin
            if (pos('.', TEdit(Sender).Text) <> 0) and (Length(copy(TEdit(Sender).Text, pos('.',
              TEdit(Sender).Text) + 1, Length(TEdit(Sender).Text))) > len - 1) then
              Key := char(0)
            else
            begin
              if (trim(TEdit(Sender).text) = '0') or (trim(TEdit(Sender).text) = '-0') then
                Key := char(0)
            end;
          end;
      end;
    end;