In Delphi, wie können Sie Währungsdatentypen haben in verschiedenen Währungen in verschiedenen Formen gezeigt?
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?
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