En Delphi, ¿cómo se pueden mostrar tipos de datos monetarios en diferentes monedas y en diferentes formas?

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

  •  01-07-2019
  •  | 
  •  

Pregunta

Necesito escribir una aplicación Delphi que obtenga entradas de varias tablas en una base de datos, y las diferentes entradas estarán en diferentes monedas.Por lo tanto, necesito mostrar una cantidad diferente de decimales y un carácter de moneda diferente para cada tipo de datos de moneda ($, libras, euros, etc.) dependiendo de la moneda del artículo que he cargado.

¿Existe alguna manera de cambiar la moneda casi globalmente, es decir, para todos los datos de moneda que se muestran en un formulario?

¿Fue útil?

Solución

Incluso con la misma moneda, es posible que tengas que mostrar valores con un formato diferente (separadores, por ejemplo), por lo que te recomendaría que asocies una LOCALE en lugar de la moneda solo con tus valores.
Puede utilizar un número entero simple para contener el LCID (ID local).
Vea la lista aquí: http://msdn.microsoft.com/en-us/library/0h88fahh.aspx

Luego, para mostrar los 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;

Otros consejos

Yo usaría SysUtils.CurrToStr(Valor:Divisa;var Configuración de formato:TConfiguración de formato):cadena;

Configuraría una serie de TFormatSettings, cada posición configurada para reflejar cada moneda que admite su aplicación.Deberá configurar los siguientes campos de la configuración de TFormat para cada posición de la matriz:Cadena de moneda, Formato de moneda, Formato de moneda Neg, Separador de mil, Separador de decimales y Decimales de moneda.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top