Mascara para Dinheiro Dinamica quot;DICAquot;

Delphi

02/06/2003

A algum tempo estava procurando uma forma de criar a mascara para dinheiro dinamicamente ou seja enquanto o usuario digita os numeros. não encontrei em nenhum site
so encontrei a maneira de mascarar o Tedit pelo onexit,
mas depois de varios neuronios fritos eu consegui fazer o negocio funcionar no onkeypress e resolvi compartilhar.

**********************************************************************************************************************
Function ValorMonetario(Armazena: string; key:char):string;
var
valor : real;
Aux,aux2 : string;
auxint : integer;
begin
try
begin
Aux := trim(RestauraInteger(Armazena));
Aux := Aux + key;
auxint := strtoint(aux);
aux := inttostr(auxint);
valor := StrToFloat(aux);
case key of
´5´..´9´ : Aux2 := (FormatFloat(´#,0.0;;´,(0.10 - (valor/100))))
else
Aux2 := (FormatFloat(´#,0.0;;´, valor/100));
end;

result := RetiraNegativo(aux2);
end;
except
end;
end;

Function RetiraNegativo(Valor:string):string;
Var
i: Integer;
begin
if Valor <> ´ ´ then
begin
for i := 0 to Length(Valor) do
begin
if Valor[i]=´-´ then
begin
Delete(valor,i,1);
end;
end;
end;
Result := Valor;
end;

function RestauraInteger(Valor: string): string;
Var
i: Integer;

begin
if Valor <> ´ ´ then
begin
for i := 0 to Length(Valor) do
begin
if Valor[i]=´.´ then
begin
Delete(valor,i,1);
end
else
if Valor[i] = ´,´ then
begin
Delete(valor,i,1);
end;
end;
end;
result := trim(valor);
end;


**********************************************************************************************************************
para chamar a função no evento onkeypress do Tedit ou TMaskEdit

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case key of
´0´..´9´ Edit1.Text := ValorMonetario(Edit1.Text,Key);
end;
end;

**********************************************************************************************************************
espero ter ajudado

eder_cpd@yahoo.com.br :shock:


Eder_cpd

Eder_cpd

Curtidas 0

Respostas

Luiz Ferreira

Luiz Ferreira

02/06/2003

Não funcionou aqui comigo, poderia me mandar um exemplo luizcarloscf@hotmail.com. Obrigado
GOSTEI 0
POSTAR