Fórum formatar casas decimais em um campo memo com varias linhas #257447
07/11/2004
0
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
Curtir tópico
+ 0Posts
07/11/2004
Keitarosan
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
07/11/2004
Keitarosan
Gostei + 0
07/11/2004
Gurc
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
07/11/2004
Gurc
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
07/11/2004
Gurc
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
07/11/2004
Gurc
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
07/11/2004
Gurc
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)