2008-09-17 2 views
7

Мне нужно написать приложение Delphi, которое вытаскивает записи из разных таблиц в базе данных, а разные записи будут в разных валютах. Таким образом, мне нужно показать различное количество знаков после запятой и другой валютный символ для каждого типа данных валюты ($, фунты, евро и т. Д.) В зависимости от валюты загруженного мной элемента.В Delphi, как вы можете использовать типы данных валют в разных валютах в разных формах?

Есть ли способ изменить валюту почти глобально, то есть для всех данных валюты, отображаемых в форме?

ответ

7

Даже в той же валюте вам может потребоваться отображать значения в другом формате (например, разделители), поэтому я бы рекомендовал вам сопоставить LOCALE вместо валюты только с вашими значениями.
Вы можете использовать простое целое число, чтобы удерживать LCID (идентификатор локали).
Смотрите список здесь: http://msdn.microsoft.com/en-us/library/0h88fahh.aspx

Тогда для отображения значений, используйте что-то вроде:

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

Я бы использовал SysUtils.CurrToStr (Value: Currency; var FormatSettings: TFormatSettings): string;

Я установил массив TFormatSettings, каждая позиция была настроена так, чтобы отражать каждую валюту, поддерживаемую вашим приложением. Вам нужно будет установить следующие поля настроек TFormat для каждой позиции массива: CurrencyString, CurrencyFormat, NegCurrFormat, ThousandSeparator, DecimalSeparator и CurrencyDecimals.

 Смежные вопросы

  • Нет связанных вопросов^_^