Olá pessoal gostaria em saber se alguém uma função que ao digitar um valor no edit ele já vai colocando em casas decimais usando o KeyPress do Edit, logo tenho esse abaixo:
function TForm1.fnumD(Objeto: TEdit; Texto, VKey: String; Espaco, Decimal: Integer): String;
Ele faz isso, porem o unico problema é o seguinte: por exemplo eu digito 222 o resultado no edit será 0,222 porem q eu queria é quando eu seleciosse todo o valor no edit e digitasse ele apagasse esse valor anterior e começasse com o valor digitado, por exemplo , selecionei o 0,222 e digitei 333 e o resultado teria que ser 0,333! Logo se eu fizer esse processo nessa função o resultado será 222,333 , tipo ele soma ao invés de substituir!
Se alguém tiver uma função melhor ou até mesmo dar uma dica p melhorá-la ficarei grato!
Pergunta
Paulo Henrique de Assis
Olá pessoal gostaria em saber se alguém uma função que ao digitar um valor no edit ele já vai colocando em casas decimais usando o KeyPress do Edit, logo tenho esse abaixo:
function TForm1.fnumD(Objeto: TEdit; Texto, VKey: String; Espaco, Decimal: Integer): String;
Var vChar, vDiv : String;
I : Integer;
begin
vDiv := '1';
For I := 1 to Decimal do
vDiv := vDiv + '0';
if VKey<>#13 then
vChar := IfThen ( VKey = #8, Copy(Texto,1,Length(Texto)-1),Texto+VKey )
else
vChar := IfThen ( VKey = #8, Copy(Texto,1,Length(Texto)-1),Texto+'' );
While ( pos( ',', vChar ) > 0 ) or ( pos( '.', vChar ) > 0 ) do
begin
Delete( vChar, pos( '.', vChar ), 1 );
Delete( vChar, pos( ',', vChar ), 1 );
end;
Objeto.MaxLength := Espaco-1;
Objeto.Text := Format('%*.*n',[Espaco,Decimal,StrToFloat(vChar)/StrToInt(vDiv)]);
Objeto.SelStart := length(Objeto.text)+1;
end;
Ele faz isso, porem o unico problema é o seguinte: por exemplo eu digito 222 o resultado no edit será 0,222 porem q eu queria é quando eu seleciosse todo o valor no edit e digitasse ele apagasse esse valor anterior e começasse com o valor digitado, por exemplo , selecionei o 0,222 e digitei 333 e o resultado teria que ser 0,333! Logo se eu fizer esse processo nessa função o resultado será 222,333 , tipo ele soma ao invés de substituir!
Se alguém tiver uma função melhor ou até mesmo dar uma dica p melhorá-la ficarei grato!
Até Mais!!!
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.