في دلفي، كيف يمكنك عرض أنواع بيانات العملة بعملات مختلفة وبأشكال مختلفة؟
سؤال
أحتاج إلى كتابة تطبيق دلفي الذي يسحب الإدخالات من جداول مختلفة في قاعدة بيانات، وستكون الإدخالات المختلفة بعملات مختلفة.وبالتالي، أحتاج إلى إظهار عدد مختلف من المنازل العشرية وحرف عملة مختلف لكل نوع بيانات عملة (دولار، جنيه، يورو، إلخ) اعتمادًا على عملة العنصر الذي قمت بتحميله.
هل هناك طريقة لتغيير العملة بشكل شبه عالمي، أي لجميع بيانات العملة المعروضة في النموذج؟
المحلول
حتى باستخدام نفس العملة، قد يتعين عليك عرض القيم بتنسيق مختلف (الفواصل على سبيل المثال)، لذلك أوصي بربط LOCALE بدلاً من العملة بقيمك فقط.
يمكنك استخدام عدد صحيح بسيط للاحتفاظ بمعرف 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;
نصائح أخرى
سأستخدم SysUtils.CurrToStr(Value:عملة؛إعدادات التنسيق فار:إعدادات التنسيق):خيط؛
لقد قمت بإعداد مجموعة من إعدادات TFormatSettings، حيث تم تكوين كل موضع ليعكس كل عملة يدعمها تطبيقك.ستحتاج إلى تعيين الحقول التالية لإعدادات TFormat لكل موضع صفيف:سلسلة العملات، تنسيق العملة، تنسيق NegCurr، فاصل الألف، فاصل العشري، والأرقام العشرية للعملة.