Mascara para Dinheiro Dinamica quot;DICAquot;
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:
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
Curtidas 0
Respostas
Luiz Ferreira
02/06/2003
Não funcionou aqui comigo, poderia me mandar um exemplo luizcarloscf@hotmail.com. Obrigado
GOSTEI 0