2008-09-17 21 views
7

Necesito escribir una aplicación Delphi que extraiga entradas de varias tablas en una base de datos, y diferentes entradas estarán en diferentes monedas. Por lo tanto, debo mostrar un número diferente de decimales y un carácter de moneda diferente para cada tipo de datos de moneda ($, libras, euros, etc.) según la moneda del artículo que cargué.En Delphi, ¿cómo se pueden mostrar los tipos de datos de moneda en diferentes monedas en diferentes formas?

¿Hay alguna manera de cambiar la moneda de forma casi global, es decir, para todos los datos de moneda mostrados en un formulario?

Respuesta

7

Incluso con la misma moneda, puede que tenga que mostrar valores con un formato diferente (separadores, por ejemplo), así que le recomiendo que asocie un LOCALE en lugar de la moneda solo con sus valores.
Puede usar un número entero simple para contener el LCID (ID de configuración regional).
Ver la lista aquí: http://msdn.microsoft.com/en-us/library/0h88fahh.aspx

continuación para mostrar los valores, usar 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; 
5

Utilizaría SysUtils.CurrToStr (Value: Currency; var FormatSettings: TFormatSettings): cadena;

Configuraría una matriz de TFormatSettings, cada posición configurada para reflejar cada divisa compatible con su aplicación. Tendrá que establecer los siguientes campos de la configuración de TFormat para cada posición de matriz: CurrencyString, CurrencyFormat, NegCurrFormat, ThousandSeparator, DecimalSeparator y CurrencyDecimales.

Cuestiones relacionadas