Em Delphi, como você pode ter tipos de dados de moeda mostrado em diferentes moedas de diferentes formas?

StackOverflow https://stackoverflow.com/questions/86002

  •  01-07-2019
  •  | 
  •  

Pergunta

Eu preciso escrever uma aplicação Delphi que puxa as entradas a partir de várias tabelas em um banco de dados e diferentes entradas estarão em diferentes moedas. Assim, eu preciso mostrar um número diferente de casas decimais e um caráter moeda diferente para cada tipo de dados de moeda ($, libras, euros, etc), dependendo da moeda do item I já carregado.

Existe uma maneira de alterar a moeda quase todo o mundo, isto é, para todos os dados de moeda mostrados em um formulário?

Foi útil?

Solução

Mesmo com a mesma moeda, você pode ter que exibir valores com um formato diferente (separadores, por exemplo), então eu recomendo que você associa um local em vez da moeda única com os seus valores.
Você pode usar um simples Integer para segurar o LCID (ID de localidade).
Veja a lista aqui: http://msdn.microsoft.com/en-us /library/0h88fahh.aspx

Em seguida, para exibir os valores, use algo como:

function CurrFormatFromLCID(const AValue: Currency; const LCID: Integer = LOCALE_SYSTEM_DEFAULT): string;
var
  AFormatSettings: TFormatSettings;
begin
  GetLocaleFormatSettings(LCID, AFormatSettings);
  Result := CurrToStrF(AValue, ffCurrency, AFormatSettings.CurrencyDecimals, AFormatSettings);
end;

function USCurrFormat(const AValue: Currency): string;
begin
  Result := CurrFormatFromLCID(AValue, 1033); //1033 = US_LCID
end;

function FrenchCurrFormat(const AValue: Currency): string;
begin
  Result := CurrFormatFromLCID(AValue, 1036); //1036 = French_LCID
end;

procedure TestIt;
var
  val: Currency;
begin
  val:=1234.56;
  ShowMessage('US: ' + USCurrFormat(val));
  ShowMessage('FR: ' + FrenchCurrFormat(val));
  ShowMessage('GB: ' + CurrFormatFromLCID(val, 2057)); // 2057 = GB_LCID
  ShowMessage('def: ' + CurrFormatFromLCID(val));
end;

Outras dicas

Eu usaria SysUtils.CurrToStr (Valor: Moeda; var FormatSettings: TFormatSettings): string;

Eu tinha configurar uma variedade de TFormatSettings, cada posição configurado para refletir cada moeda seus suportes de aplicação. Você precisará definir os seguintes campos das Configurações TFormat para cada posição array:. CurrencyString, CurrencyFormat, NegCurrFormat, ThousandSeparator, DecimalSeparator e CurrencyDecimals

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top