Formatar TCurrencyEdit para separar o valor inserido com casas deicmais
Boa tarde galera!
Seguinte, não estou conseguindo configurar o CurrencyEdit pra formatar os valores digitados. Alterando o Display Format eu consigo fazer ele mostrar certo a formatação no campo, mas queria fazer com que o usuário não precisasse digitar o "." ou a "," pra separar os valores e sim apenas digitar os valores como inteiro, por exemplo 123, e o próprio componente fizesse a inserção da virgula após o 1. O que acontece só com o Display Format do jeito que tá (0.00;- 0.00) é que quando o usuário digita 123, ele formata pra 123,00 e não é isso que eu preciso...
=x
Se alguém souber como resolver, ficarei mto grata..... faz um tempo que eu tô tentando e não consegui
=/
Tks!
Seguinte, não estou conseguindo configurar o CurrencyEdit pra formatar os valores digitados. Alterando o Display Format eu consigo fazer ele mostrar certo a formatação no campo, mas queria fazer com que o usuário não precisasse digitar o "." ou a "," pra separar os valores e sim apenas digitar os valores como inteiro, por exemplo 123, e o próprio componente fizesse a inserção da virgula após o 1. O que acontece só com o Display Format do jeito que tá (0.00;- 0.00) é que quando o usuário digita 123, ele formata pra 123,00 e não é isso que eu preciso...
=x
Se alguém souber como resolver, ficarei mto grata..... faz um tempo que eu tô tentando e não consegui
=/
Tks!
Aurélia Vieira
Curtidas 0
Respostas
Marcos Saffran
11/05/2014
[url]https://www.devmedia.com.br/forum/como-auto-incrementar-as-virgulas-e-os-pontos/472980[/url]
GOSTEI 0
Cauê Nishijima
11/05/2014
Tenta o código que criei :
E para utilizar é só colocar no evento KeyUp dos campos que você deseja o seguinte:
function formataCurrency(texto: string): string;
var
textoSemFormatacao: string;
result1, result2 : string;
i, count :Integer;
begin
if texto <> '' then
begin
for i := 1 to length(texto) do
begin
if (Copy(texto,i,1) <> ',') and (Copy(texto,i,1) <> '.') then
textoSemFormatacao := textoSemFormatacao + Copy(texto,i,1);
end;
textoSemFormatacao := IntToStr(StrToInt64(textoSemFormatacao));
if length(textoSemFormatacao) <= 2 then
begin
while length(textoSemFormatacao) < 4 do
begin
if length(textoSemFormatacao) = 2 then
textoSemFormatacao := ',' + textoSemFormatacao
else
textoSemFormatacao := '0' + textoSemFormatacao;
end;
result := textoSemFormatacao;
end
else
begin
count := 0;
for i:=length(textoSemFormatacao) downto (length(textoSemFormatacao)-2) do
begin
count := count + 1;
if count = 3 then
result1 := copy(textoSemFormatacao,i,1) + ',' + result1
else
result1 := copy(textoSemFormatacao,i,1) + result1;
end;
count := 0;
for i:=(length(textoSemFormatacao)-3) downto 1 do
begin
count := count + 1;
if count = 3 then
begin
result2 := copy(textoSemFormatacao,i,1) + '.' + result2;
count := 0;
end
else
result2 := copy(textoSemFormatacao,i,1) + result2;
end;
result := result2 + result1;
end;
end;
end;
E para utilizar é só colocar no evento KeyUp dos campos que você deseja o seguinte:
edt1.Text := formataCurrency(edt1.Text); edt1.SelStart :=Length(edt1.Text)
GOSTEI 0