Fórum Campo valor igual aos bancos #9258

11/09/2009

0

Gostaria de saber como consigo o efeito de digitacao igual aos campos de valores nas paginas de banco.   Onde eu nao preciso digitar a virgula para ser entendido por exemplo:   se digitar: 234770 -   o sistema automaticamente entende e formata para:  2.347,70 se digitar: 10000 - o sistema formata para: 100,00     ou seja, eu nao digito "."(ponto) ou ","(virgula)... apenas os caracteres numericos, e o sistema, ao ser digitado, vai formatando o campo para #,##0.00, aos olhos do usuario...  
Augusto Leao

Augusto Leao

Responder

Posts

11/09/2009

Rodrigo Mourão

Olá Amigo,

Deixa ver se entendi, você quer formatar conforme vai digitando? Seria isso ?

Pois temos a propriedade mask ou até mesmo um formatfloat.

Fico no aguardo !!

ABS!
Responder

Gostei + 0

11/09/2009

Augusto Leao

Na verdade você vai digitando o valor na campo, ele automaticamente vai formatando o campo. você nao precisa digitar "." ou "," Ele mesmo entende que se digitar R$ 2000, será formatado para 20,00. Do jeito que esta hoje, se eu digitar 2000, fica formatado 2.000,00 pq a mascara esta definida como #,##0.00. Se eu digitar 235263 ficará formatado para 235.263,00, qdo eu gostaria que ele fosse formatando conforme digitado. E o valor correto seria 2.352,63 e nao 235.263,00 como esta ficando qdo vou digitando. é só entrar no site do banco do brasil ou bradesco PJ, digitar o valor... Outra coisa... Onde eu coloco GENERATOR no CLIENTDATASET???
Responder

Gostei + 0

14/09/2009

Rodrigo Mourão

Ok, Entendi.

Eu entrei no Banco do Brasil e peguei o codigo JvaScript que vai aquilo. Vou tentar convertê-lo para Delphi para tentar o mesmo efeito, não garanto o sucesso mas vamos tentar.

Peço que aguarde o envio do código.

Abs!!

P.S.: Quanto a dúvida do CDS peço que abra um novo chamado, cada dúvida deve ser respondida em um chamado exclusivo.
Responder

Gostei + 0

16/09/2009

Rodrigo Mourão

Segue função.

Não ficou muito bonita não mas funciona. Selecione o Edit que vc quer aplicar a formatação e no evento OnKeyUp coloque o codigo abaixo:

var
  s: String;
begin
   if (Key in [96..107]) or (Key in [48..57]) then
   begin
     S := Edit1.Text;
     S := StringReplace(S,',','',[rfReplaceAll]);
     S := StringReplace(S,'.','',[rfReplaceAll]);
     if Length(s) = 3 then
     begin
       s := Copy(s,1,1)+','+Copy(S,2);
       Edit1.Text := S;
       Edit1.SelStart := Length(S);
     end
     else
       if (Length(s) > 3) and (Length(s) < 6) then
       begin
         s := Copy(s,1,length(s)-2)+','+Copy(S,length(s)-1);
         Edit1.Text := s;
         Edit1.SelStart := Length(S);
       end
       else
         if (Length(s) >= 6) and (Length(s) < 9) then
         begin
           s := Copy(s,1,length(s)-5)+'.'+Copy(s,length(s)-4,3)+','+Copy(S,length(s)-1);
           Edit1.Text := s;
           Edit1.SelStart := Length(S);
         end
         else
           if (Length(s) >= 9) and (Length(s) < 12) then
           begin
             s := Copy(s,1,length(s)-8)+'.'+Copy(s,length(s)-7,3)+'.'+Copy(s,length(s)-4,3)+','+Copy(S,length(s)-1);
             Edit1.Text := s;
             Edit1.SelStart := Length(S);
           end
           else
             if (Length(s) >= 12) and (Length(s) < 15)  then
             begin
               s := Copy(s,1,length(s)-11)+'.'+Copy(s,length(s)-10,3)+'.'+Copy(s,length(s)-7,3)+'.'+Copy(s,length(s)-4,3)+','+Copy(S,length(s)-1);
               Edit1.Text := s;
               Edit1.SelStart := Length(S);
             end;
   end;


Ele formata ate Bilhão, ou seja,  125.656.698.874,20  caso queria comtemplar mais digitos e so alterar a rotina e colocar mais um if.

Espero ter ajudado.

Abs!!


Responder

Gostei + 0

18/09/2009

Augusto Leao

teste, e funcionou em parte... por exemplo, se eu digitar 98 ele nao traz as casas decimais (98,00), fica 98 e isso para qualquer valor sem o (zero)... exemplos: 78 - deveria ficar 78,00 e fica 78 ( no campo texto) 65 - deveria ficar 65,00 e fica 65 ( no campo texto) 45 - deveria ficar 45,00 e fica 45 ( no campo texto)
Responder

Gostei + 0

18/09/2009

Rodrigo Mourão

Amigo eu fiz a rotina igual esta no banco, tem que gitiar os centavos, ou seja, se voce quer 98,00 digite 9800.

abs!!


Responder

Gostei + 0

18/09/2009

Augusto Leao

Beleza, isso é um detalhe.... Fecha este chamado. Obrigado pela consultoria... Vou abrir um outro sobre localizacao de campo ja existente no banco.. gostaria que vc me respondesse bem rapidim... abcs
Responder

Gostei + 0

24/09/2009

Augusto Leao

Amigo, desculpa reabrir aqui. Mas eu fui fazer um teste em valor = 1000,00 ele nao aceita... Ou seja, dou um ENTER  ele nao sai do campo... 
Responder

Gostei + 0

28/09/2009

Rodrigo Mourão

Aqui funcionou,

Não digite as virgulas.  Digite  100000 para ele formatar para 1000,00


Abs!!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar