我要设置在EDIT中只能输入金额,显示的格式保留两位小数,默认为0.00,不能输入其他格式,可以用标准控件实现吗?

解决方案 »

  1.   

    可以在edit的keypress事件中设置只能输入1-9,小数点,同时判定是否小数点后是否已经达到两位
      

  2.   

    让TEdit控件只接收数字输入。
    在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;
    其它自已看著辦
      

  3.   

    为了统一风格,我只用了SUIPACK一组控件,其中的SUIEDIT和标准EDIT的属性是一样的,其他控件用了界面就不美观了 :)
      

  4.   

    如果不动态更换界面的话用snpack里的SnMaskEdit,就可以了
      

  5.   

    可以使用dev express的cxCurrencyEdit
    XP风格的,爽
      

  6.   

    都说了为了风格统一不想用其他控件了啊,我用的是DEEPBLUE风格的
      

  7.   

    上面个各位说得都不够完善
    我给你一个最终完美的吧!
    ————
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    var  s:integer;
         bj:integer;
         str:String;
    begin
    //第一位不能输入小数点,只能有一个小数点
    if (Key = '.') and ((Length(edit1.text) = 0) or (Pos('.', edit1.text) > 0)) then
        Key := #0;
    ////第一位只能输入负号,只能有一个负号
    if (Key = '-') and ((Length(edit1.text) <> 0) or (Pos('-', edit1.text) > 0)) then
        Key := #0;
    //只能输入 0到9、负号、退格、回车
    if not (key in ['0'..'9','-','.',#8,#13]) then  key:=#0;
    //限制小数点后2位
       if key<>#8 then
         begin
         bj:=pos('.',edit1.text);
         if bj>0 then
           begin
            s:=length(edit1.Text);
            str:=Copy(edit1.text, bj,s-bj);
            if length(str)>=2 then
              key:=#0;
           end;
          end;end;
    //edit有个属性叫MAXLEANTH,缺省是0,你设定个数字如5那只能输5位
      

  8.   

    这个EDIT输入金额问题的很好解决
    我问题最大的是DBGRID网格中输入金额的问题
    各位能不能帮我??
      

  9.   

    谢谢楼上各位,问题就剩缺省值了,小弟自己想吧,由于我要在很多EDIT中用下面的函数,所以我把函数该成这样:procedure TMainForm.suiEdit8KeyPress(Sender: TObject; var Key: Char);
    var
      s:integer;
      bj:integer;
      str:string;
    begin
      if not (Key in ['0'..'9','.',#8,#13]) then
        Key:=#0;
      if key<>#8 then
      begin
        bj:=pos('.',TEdit(Sender).Text);
        if bj>0 then
        begin
          s:=length(TEdit(Sender).Text);
          str:=Copy(TEdit(Sender).Text, bj,s-bj);
          if length(str)>=2 then
            key:=#0;
        end;
      end;
      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;
    end;
      

  10.   

    搞那么复杂,大家好像不是特别喜欢用MaskEdit啊