Ngay cả với cùng đơn vị tiền tệ, bạn có thể phải hiển thị các giá trị có định dạng khác (ví dụ như dấu tách), vì vậy tôi khuyên bạn nên kết hợp LOCALE thay vì tiền tệ chỉ với giá trị của bạn.
Bạn có thể sử dụng một số nguyên đơn giản để giữ LCID (ID ngôn ngữ).
Xem danh sách ở đây: http://msdn.microsoft.com/en-us/library/0h88fahh.aspx
Sau đó, để hiển thị các giá trị, sử dụng một cái gì đó như:
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;
Nguồn
2008-09-17 20:31:42