各位大虾帮忙吧

解决方案 »

  1.   

    用 dxDBCurreyEdit 就可以。
      

  2.   

    1.用MASKEDIT
    2.在OnKeyUp事件里写入var
      len1, len2, P_pos:integer;
    begin
      len1:=length(trim(edit1.text));
      P_pos:=Pos('.',trim(edit1.text));
      len2:=length(Copy(trim(edit1.text), P_pos+1, len1-P_pos));
      if len2>2 then
      begin
        Application.MessageBox('小数点后超过两位','警告',0);
        edit1.SetFocus;
      end;
    end;
      

  3.   


    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    var
      DotPos,Len:integer;
    begin
      DotPos:=pos('.',(Sender as TEdit).Text);
      Len:=length((Sender as TEdit).Text);
      if key in ['0'..'9',#8,'.','+','-'] then
      begin
        if (key in ['+','-']) then
        begin
          //只能在光标处于第一的位置,才能输入'+'或者'-'
          if ((Sender as TEdit).SelStart>0) then
          begin
            key:=#0;
            exit;
          end;
          //'+','-'互斥
          if (pos('+',(Sender as TEdit).Text)>0) or
             (pos('-',(Sender as TEdit).Text)>0) then
          begin
            key:=#0 ;
            exit;
          end;
        end ;
        if key in ['.'] then
        begin
          //只能输入一个'.'
          if (DotPos>0) then
          begin
            key:=#0  ;
            exit;
          end;
          //只能在'+','-'后面输入'.'
          if (pos('+',(Sender as TEdit).Text)>0) or
             (pos('-',(Sender as TEdit).Text)>0) then
            if ((Sender as TEdit).SelStart<=0) then
            begin
              key:=#0 ;
              exit;
            end;
          //小数点必须在最后两位
          if (DotPos<=0) and ((Sender as TEdit).SelStart<Len-2) then
          begin
            key:=#0 ;
            exit;
          end;
        end;
        if key in ['0'..'9'] then
        //小数点后面最多两位
        if (DotPos>0) and(DotPos<=Len-2)  and
           ((Sender as TEdit).SelStart>=DotPos) then
          key:=#0 ;
      end
      else
        key:=#0;
    end;
      

  4.   

    adsName.FieldByName('money').EditMask:= '999999.99;1; ';
      

  5.   

    我写过得一个控制在四位得,你改成2就可以了
    procedure Tfrmnewproject.edtfloatExit(Sender: TObject);
    var tempstr,tempstrline:string;
    begin
    if pos('.',(sender as Tedit).Text)=1 then
      begin
       messagebox(handle,'您输入的数据非法,数字首位不可以为小数点,请重新输入',strwyd,mb_iconstop+mb_ok);
       (sender as Tedit).Text:='';
       (sender as Tedit).SetFocus;
       exit;
      end;
    if pos('-',(sender as Tedit).Text)<>0 then
      begin
        tempstrline:=copy((sender as Tedit).Text,pos('-',(sender as Tedit).Text)+1,length((sender as Tedit).Text));
        if pos('-',(sender as Tedit).Text)<>1 then
          begin
           messagebox(handle,'您输入的数据非法,数字首位才可以为负号,请重新输入',strwyd,mb_iconstop+mb_ok);
           (sender as Tedit).Text:='';
           (sender as Tedit).SetFocus;
           exit;
          end;
        if (copy(tempstrline,1,1)='.') then
          begin
           messagebox(handle,'您输入的数据非法,请重新输入',strwyd,mb_iconstop+mb_ok);
           (sender as Tedit).Text:='';
           (sender as Tedit).SetFocus;
           exit;
          end;
        if pos('-',tempstrline)>0 then
          begin
           messagebox(handle,'您输入的数据非法,请重新输入',strwyd,mb_iconstop+mb_ok);
           (sender as Tedit).Text:='';
           (sender as Tedit).SetFocus;
           exit;
          end;
      end;
    if pos('.',(sender as Tedit).Text)>0 then
       begin
         tempstr:=copy((sender as Tedit).Text,pos('.',(sender as Tedit).Text)+1,length((sender as Tedit).Text));
         if (pos('.',tempstr)>0) then
            begin
             messagebox(handle,'您输入的数据非法,请重新输入',strwyd,mb_iconstop+mb_ok);
             (sender as Tedit).Text:='';
             (sender as Tedit).SetFocus;
            end;
         if trim(tempstr)='' then begin (sender as Tedit).Text:=copy((sender as Tedit).Text,1,pos('.',(sender as Tedit).Text)-1);exit; end;
         if length(tempstr)>4 then
           (sender as Tedit).Text:=copy((sender as Tedit).Text,1,pos('.',(sender as Tedit).Text))+copy(tempstr,1,4);
        end;
    end;