Fórum Valor por extenso #197939

29/11/2003

0

Oi..Amigos

Mais uma vez estou aqui contando com ajuda de vcs, uso delphi 6 e o banco e paradox gostaria de colocar no meu form um (edit ou dbedit) com um valor digamos R$ 10,00, e que saia em um outro campo tipo (label) o valor em extenso ´ Dez reais ´ e ainda jogar no relatorio o valor em extenso (meu form e tipo fatura)

Obs, espero ter sido claro, e sou iniciante, por favor me mostrem passo-a-passo.

Agradeço desde ja


Wagner

Wagner

Responder

Posts

29/11/2003

Michel

function MiniExtenso( Valor: ShortString ): string;
var Unidade, Dezena, Centena: String;
begin
if (Valor[2] = ´1´) and (Valor[3] <> ´0´)
then
begin
Unidade := Dez[StrToInt(Valor[3])];
Dezena := ´´;
end
else
begin
if Valor[2] <> ´0´
then Dezena := Dezenas[StrToInt(Valor[2])];
if Valor[3] <> ´0´
then unidade:= Unidades[StrToInt(Valor[3])];
end;
if (Valor[1] = ´1´) and (Unidade = ´´) and (Dezena = ´´)
then Centena := ´cem´
else
if Valor[1] <> ´0´
then Centena := Centenas[StrToInt(Valor[1])]
else Centena := ´´;
Result := Centena + ifs( (Centena <> ´´) and
((Dezena <> ´´) or (Unidade <> ´´)), ´ e ´, ´´) + Dezena +
ifs( (Dezena <> ´´) and (Unidade <> ´´), ´ e ´, ´´) + Unidade;
end;


begin
if Valor = 0
then
begin
Result := ´´;
Exit;
end;
Texto := FormatFloat( ´000000000000.00´, Valor );
Centavos := MiniExtenso( ´0´ + Copy( Texto, 14, 2 ) );
Centena := MiniExtenso( Copy( Texto, 10, 3 ) );
Milhar := MiniExtenso( Copy( Texto, 7, 3 ) );
if Milhar <> ´´
then Milhar := Milhar + ´ Mil´;
Milhao := MiniExtenso( Copy( Texto, 4, 3 ) );
if Milhao <> ´´
then Milhao := Milhao +
ifs( Copy( Texto, 4, 3 ) = ´001´, ´ Milhão´,´ Milhões´);
Bilhao := MiniExtenso( Copy( Texto, 1, 3 ) );
if Bilhao <> ´´
then Bilhao := Bilhao +
ifs( Copy( Texto, 1, 3 ) = ´001´, ´ Bilhão´,´ Bilhões´);
if (Bilhao <> ´´) and (Milhao + Milhar + Centena = ´´)
then Result := Bilhao + ´ de Reais´
else
if (Milhao <> ´´) and (Milhar + Centena = ´´)
then Result := Milhao + ´ de Reais´
else Result := Bilhao +
ifs( (Bilhao <> ´´) and
(Milhao + Milhar + Centena <>´´),
ifs((Pos(´ e ´, Bilhao) > 0) or
(Pos( ´ e ´, Milhao + Milhar + Centena ) > 0)
, ´, ´, ´ e ´), ´´) + Milhao +
ifs( (Milhao <> ´´) and
(Milhar + Centena <> ´´), ifs((Pos(´ e ´, Milhao) > 0)
or (Pos( ´ e ´, Milhar + Centena ) > 0 ),
´, ´,´ e ´), ´´) + Milhar + ifs( (Milhar <> ´´) and
(Centena <> ´´),
ifs(Pos( ´ e ´, Centena ) > 0, ´, ´, ´ e ´), ´´)+
Centena + ifs( Int(Valor) = 1, ´ Real´, ´ Reais´ );
if Centavos <> ´´
then Result := Result + ´ e ´ + Centavos +
ifs( Copy( Texto, 14, 2 )= ´01´, ´ Centavo´, ´ Centavos´ );
end;


Responder

Gostei + 0

29/11/2003

Wagner

Ok..valeu pela dica :( mais como sou iniciante ainda nao sei bem como utilizar funções, como adiciona-la ou como fazer com que meu form reconheca a função quando digitar o valor no dbedit e o resultado por extenso sair no label e no formulario. pode me ajudar. :lol:


Responder

Gostei + 0

30/11/2003

Wagner

Eu Agradeço


Responder

Gostei + 0

01/12/2003

Marcelo.c

Tenho um componente que gera extenso, se quiser, me mande um e-mail e o enviarei para você.


Responder

Gostei + 0

06/12/2003

Wagner

Ok..eu agradeco

wagnernormando@ig.com.br


Responder

Gostei + 0

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

Aceitar