В Delphi, как можно было показать типы данных валюты в различных валютах в различных формах?

7
задан apenwarr 17 September 2008 в 18:10
поделиться

2 ответа

Даже с той же валютой, Вам, вероятно, придется отобразить значения с другим форматом (разделители, например), таким образом, я рекомендовал бы связать ЛОКАЛЬ вместо валюты только со значениями.
Можно использовать простое Целое число для содержания 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;
7
ответ дан 6 December 2019 в 21:22
поделиться

Я использовал бы SysUtils. CurrToStr (Значение: Валюта; var FormatSettings: TFormatSettings): строка;

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

5
ответ дан 6 December 2019 в 21:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: