In Delphi, wie können Sie Währungsdatentypen haben in verschiedenen Währungen in verschiedenen Formen gezeigt?

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

  •  01-07-2019
  •  | 
  •  

Frage

Ich brauche eine Delphi-Anwendung zu schreiben, die Einträge nach oben aus verschiedenen Tabellen in einer Datenbank zieht, und verschiedene Einträge in verschiedenen Währungen sein. So, ich brauche eine andere Anzahl von Dezimalstellen zu zeigen, und eine andere Währung Zeichen für jeden Datentyp Währung ($, Pfund, Euro, usw.) je nach der Währung des Artikel I geladen haben.

Gibt es eine Möglichkeit, die Währung fast global zu ändern, das heißt, für alle Währungsdaten in einer Form gezeigt?

War es hilfreich?

Lösung

Auch mit der gleichen Währung, können Sie Werte mit einem anderen Format (Separatoren zum Beispiel) angezeigt werden müssen, so würde ich empfehlen, dass Sie eine LOCALE assoziieren anstelle der Währung nur mit Ihren Werten.
Sie können einen einfachen Integer verwenden, um die LCID (Gebietsschema-ID) zu halten.
Sehen Sie die Liste hier: http://msdn.microsoft.com/en-us /library/0h88fahh.aspx

Dann die Werte anzuzeigen, verwenden Sie so etwas wie:

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;

Andere Tipps

Ich würde verwenden SysUtils.CurrToStr (Wert: Währung; var FormatSettings: TFormatSettings): string;

würde ich Setup eine Reihe von TFormatSettings, jede Position konfiguriert, um jede Währung zu reflektieren Ihre Anwendung unterstützt. Hier finden Sie die folgenden Felder der tformat Einstellungen für jede Position im Array festlegen müssen. CurrencyString, CurrencyFormat, NegCurrFormat, ThousandSeparator, DecimalSeparator und CurrencyDecimals

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top