formatar casas decimais em um campo memo com varias linhas
Como formatar casas decimais em um campo Memo com varias linhas, conforme o exemplo abaixo:
assim
1000
5000
4500
3500
ficar assim
1,000.00
5,000.00
4,500.00
3,500.00
Tem como fazer :?: Note que a formatação segue o padrão do dolar :?:
Sds...
assim
1000
5000
4500
3500
ficar assim
1,000.00
5,000.00
4,500.00
3,500.00
Tem como fazer :?: Note que a formatação segue o padrão do dolar :?:
Sds...
Zotti
Curtidas 0
Respostas
Keitarosan
07/11/2004
Bom, pode ser feito assim:
var
cont: Integer;
begin
DecimalSeparator := ´.´;
ThousandSeparator := ´,´;
for cont := 0 to Memo1.Lines.Count -1 do
Memo1.Lines[cont] := FloatToStrF(StrToFloat(Memo1.Lines[cont]), ffNumber, 18, 2);
end;
e pronto... funfou aqui no Delphi 5 :D
var
cont: Integer;
begin
DecimalSeparator := ´.´;
ThousandSeparator := ´,´;
for cont := 0 to Memo1.Lines.Count -1 do
Memo1.Lines[cont] := FloatToStrF(StrToFloat(Memo1.Lines[cont]), ffNumber, 18, 2);
end;
e pronto... funfou aqui no Delphi 5 :D
GOSTEI 0
Keitarosan
07/11/2004
Esqueci de falar, eu acho bom você voltar as variaveis DecimalSeparator e a ThousandSeparator ao seu valor inicial, pra evitar problemas na sua aplicação :wink:
GOSTEI 0
Gurc
07/11/2004
Caro colega,
Acho que a maneira mais correta para fazer isso está no código a seguir. Não se esqueça de colocar um Button1 e um Memo1 em um Form1.
Nosso único problema seria chamar esse método mais uma vez, pois o método StrToFloat não suportaria os TousandSeparators, apenas os DecimalSeparators. Teriamos que tirar na mão através de um StringReplace (SysUtils) as vírgulas e usar o StrToFloat com o mesmo AFormatSettings. Acho que esse não é o seu caso, entretanto, coloco-me a disposição para eventuais dúvidas.
Até mais...
Gustavo Royer Chaurais
Acho que a maneira mais correta para fazer isso está no código a seguir. Não se esqueça de colocar um Button1 e um Memo1 em um Form1.
procedure TForm1.Button1Click(Sender: TObject); var AFormatSettings: TFormatSettings; ANumero: Real; i: Integer; begin GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, AFormatSettings); AFormatSettings.ThousandSeparator := ´,´; AFormatSettings.DecimalSeparator := ´.´; for i:= 0 to Memo1.Lines.Count - 1 do begin ANumero := StrToFloat(Memo1.Lines[i], AFormatSettings); Memo1.Lines[i] := FormatFloat(´,0.00´, ANumero, AFormatSettings); end; end;
Nosso único problema seria chamar esse método mais uma vez, pois o método StrToFloat não suportaria os TousandSeparators, apenas os DecimalSeparators. Teriamos que tirar na mão através de um StringReplace (SysUtils) as vírgulas e usar o StrToFloat com o mesmo AFormatSettings. Acho que esse não é o seu caso, entretanto, coloco-me a disposição para eventuais dúvidas.
Até mais...
Gustavo Royer Chaurais
GOSTEI 0
Gurc
07/11/2004
Caro colega,
Acho que a maneira mais correta para fazer isso está no código a seguir. Não se esqueça de colocar um Button1 e um Memo1 em um Form1.
Nosso único problema seria chamar esse método mais uma vez, pois o método StrToFloat não suportaria os TousandSeparators, apenas os DecimalSeparators. Teriamos que tirar na mão através de um StringReplace (SysUtils) as vírgulas e usar o StrToFloat com o mesmo AFormatSettings. Acho que esse não é o seu caso, entretanto, coloco-me a disposição para eventuais dúvidas.
Até mais...
Gustavo Royer Chaurais
Acho que a maneira mais correta para fazer isso está no código a seguir. Não se esqueça de colocar um Button1 e um Memo1 em um Form1.
procedure TForm1.Button1Click(Sender: TObject); var AFormatSettings: TFormatSettings; ANumero: Real; i: Integer; begin GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, AFormatSettings); AFormatSettings.ThousandSeparator := ´,´; AFormatSettings.DecimalSeparator := ´.´; for i:= 0 to Memo1.Lines.Count - 1 do begin ANumero := StrToFloat(Memo1.Lines[i], AFormatSettings); Memo1.Lines[i] := FormatFloat(´,0.00´, ANumero, AFormatSettings); end; end;
Nosso único problema seria chamar esse método mais uma vez, pois o método StrToFloat não suportaria os TousandSeparators, apenas os DecimalSeparators. Teriamos que tirar na mão através de um StringReplace (SysUtils) as vírgulas e usar o StrToFloat com o mesmo AFormatSettings. Acho que esse não é o seu caso, entretanto, coloco-me a disposição para eventuais dúvidas.
Até mais...
Gustavo Royer Chaurais
GOSTEI 0
Gurc
07/11/2004
Caro colega,
Acho que a maneira mais correta para fazer isso está no código a seguir. Não se esqueça de colocar um Button1 e um Memo1 em um Form1.
Nosso único problema seria chamar esse método mais uma vez, pois o método StrToFloat não suportaria os TousandSeparators, apenas os DecimalSeparators. Teriamos que tirar na mão através de um StringReplace (SysUtils) as vírgulas e usar o StrToFloat com o mesmo AFormatSettings. Acho que esse não é o seu caso, entretanto, coloco-me a disposição para eventuais dúvidas.
Até mais...
Gustavo Royer Chaurais
Acho que a maneira mais correta para fazer isso está no código a seguir. Não se esqueça de colocar um Button1 e um Memo1 em um Form1.
procedure TForm1.Button1Click(Sender: TObject); var AFormatSettings: TFormatSettings; ANumero: Real; i: Integer; begin GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, AFormatSettings); AFormatSettings.ThousandSeparator := ´,´; AFormatSettings.DecimalSeparator := ´.´; for i:= 0 to Memo1.Lines.Count - 1 do begin ANumero := StrToFloat(Memo1.Lines[i], AFormatSettings); Memo1.Lines[i] := FormatFloat(´,0.00´, ANumero, AFormatSettings); end; end;
Nosso único problema seria chamar esse método mais uma vez, pois o método StrToFloat não suportaria os TousandSeparators, apenas os DecimalSeparators. Teriamos que tirar na mão através de um StringReplace (SysUtils) as vírgulas e usar o StrToFloat com o mesmo AFormatSettings. Acho que esse não é o seu caso, entretanto, coloco-me a disposição para eventuais dúvidas.
Até mais...
Gustavo Royer Chaurais
GOSTEI 0
Gurc
07/11/2004
Caro colega,
Acho que a maneira mais correta para fazer isso está no código a seguir. Não se esqueça de colocar um Button1 e um Memo1 em um Form1.
Nosso único problema seria chamar esse método mais uma vez, pois o método StrToFloat não suportaria os TousandSeparators, apenas os DecimalSeparators. Teriamos que tirar na mão através de um StringReplace (SysUtils) as vírgulas e usar o StrToFloat com o mesmo AFormatSettings. Acho que esse não é o seu caso, entretanto, coloco-me a disposição para eventuais dúvidas.
Até mais...
Gustavo Royer Chaurais
Acho que a maneira mais correta para fazer isso está no código a seguir. Não se esqueça de colocar um Button1 e um Memo1 em um Form1.
procedure TForm1.Button1Click(Sender: TObject); var AFormatSettings: TFormatSettings; ANumero: Real; i: Integer; begin GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, AFormatSettings); AFormatSettings.ThousandSeparator := ´,´; AFormatSettings.DecimalSeparator := ´.´; for i:= 0 to Memo1.Lines.Count - 1 do begin ANumero := StrToFloat(Memo1.Lines[i], AFormatSettings); Memo1.Lines[i] := FormatFloat(´,0.00´, ANumero, AFormatSettings); end; end;
Nosso único problema seria chamar esse método mais uma vez, pois o método StrToFloat não suportaria os TousandSeparators, apenas os DecimalSeparators. Teriamos que tirar na mão através de um StringReplace (SysUtils) as vírgulas e usar o StrToFloat com o mesmo AFormatSettings. Acho que esse não é o seu caso, entretanto, coloco-me a disposição para eventuais dúvidas.
Até mais...
Gustavo Royer Chaurais
GOSTEI 0
Gurc
07/11/2004
Desculpem-me enviar 3 vezes a mensagem. Uma tela de página não encontrada estava sendo exibida.
GOSTEI 0