如何在Edit文本框输入中输入的是数字,而且小数点后只保留两位数字!!!!!
请教各位

解决方案 »

  1.   

    使用MaskEdit.procedure TForm1.FormCreate(Sender: TObject);
    begin
      maskedit1.EditMask:='9999.99;0;';
    end;
      

  2.   

    在EDIT的ON CHANGE事件中:
    IF NOT (KEY IN['0'..'9','.',#8]) THEN KEY:=#0
      

  3.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      //限制输入字符
      if not (key in ['1'..'9','.',#8]) then
      begin
         key := #0 ;
         exit ;
      end ;
      //限制'.'个数
      if (key = '.') and (pos('.',TEdit(Sender).Text) > 0 ) then
      begin
       Key := #0 ;
       exit ;
      end ;
      //限制个数
      if (pos('.',TEdit(Sender).Text) > 0 ) then
      begin
         if (TEdit(Sender).SelStart >= pos('.',TEdit(Sender).Text)) and
               ( Length(Copy(Tedit(Sender).Text,pos('.',TEdit(Sender).Text)+1, Length(TEdit(Sender).Text )-
                pos('.',TEdit(Sender).Text)))>1 )  and (key <>#8)then
         begin
            Key := #0 ;
            exit ;
         end ;
      end ;
    end;
      

  4.   

    {
           功能:该函数是用来约束输入控件,如TEdit的输入.参数stringtype含义:1正符点数2不影响3布尔4实数
           用法:比如要约束Edit1 的输入为小数点两位的数据类型
           则调用Tpubfun.checkkey(key,Edit1.text,2,1);
         }
    class function Tpubfun.checkkey(Key:char;Text:string;PointNum:integer;stringtype:integer):char;
    var
      j:integer;
    begin
      result:=key;
      case stringtype of
        1:
        begin
          if not (Key in ['0'..'9','.',#13,#8]) then
            result:= #0
          else
            result:=key;
          if (pos('.',Text)<>0) and (Key = '.') then
            result:= #0;
          j:=pos('.',Text);
          if j<>0 then
            if length(copy(Text,j+1,PointNum))=PointNum then
              if key=#8 then
                result:= #8
              else
               result:= #0;
        end;
        2:result:=key ;
        3:
        begin
          if not (Key in ['0','1','.',#13,#8]) then
            result:= #0
          else
            result:=key;
        end;
        4:
        begin
          if not (Key in ['0'..'9','-','.',#13,#8]) then
            result:= #0
          else
            result:=key;
          if (pos('.',Text)<>0) and (Key = '.') then
            result:= #0;
          j:=pos('.',Text);
          if j<>0 then
            if length(copy(Text,j+1,PointNum))=PointNum then
              if key=#8 then
                result:= #8
              else
               result:= #0;
        end;
      end;
    end;
      

  5.   

    使用MaskEdit,现成的不用写太多代码?
      

  6.   

    使用MaskEdit.procedure TForm1.FormCreate(Sender: TObject);
    begin
      maskedit1.EditMask:='9999.99;0;';
    end;要转换成数值则:aReal:=strToFloat(ansiReplaceText(maskedit1.Text,' ',''));
      

  7.   

    用自己的便于控制,留个什么BUG,也知道在什么地方