2008-09-17 19 views
7

Tôi cần phải viết một ứng dụng Delphi kéo các mục nhập từ nhiều bảng khác nhau trong cơ sở dữ liệu và các mục khác nhau sẽ bằng các loại tiền tệ khác nhau. Vì vậy, tôi cần hiển thị một số vị trí thập phân khác nhau và ký tự tiền tệ khác nhau cho mọi loại dữ liệu tiền tệ ($, Pounds, Euro, v.v.) tùy thuộc vào đơn vị tiền tệ của mặt hàng tôi đã tải.Ở Delphi, làm thế nào bạn có thể có loại dữ liệu tiền tệ được hiển thị bằng các loại tiền tệ khác nhau dưới các hình thức khác nhau?

Có cách nào để thay đổi đơn vị tiền tệ gần như toàn cầu, tức là, đối với tất cả dữ liệu Đơn vị tiền tệ được hiển thị trong biểu mẫu?

Trả lời

7

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; 
5

Tôi muốn sử dụng SysUtils.CurrToStr (Giá trị: Tiền tệ; var FormatSettings: TFormatSettings): string;

Tôi muốn thiết lập một mảng TFormatSettings, mỗi vị trí được định cấu hình để phản ánh từng đơn vị tiền tệ mà ứng dụng của bạn hỗ trợ. Bạn sẽ cần phải thiết lập các trường sau của Cài đặt TFormat cho mỗi vị trí mảng: CurrencyString, CurrencyFormat, NegCurrFormat, ThousandSeparator, DecimalSeparator và CurrencyDecimals.

Các vấn đề liên quan