في دلفي، كيف يمكنك عرض أنواع بيانات العملة بعملات مختلفة وبأشكال مختلفة؟

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

  •  01-07-2019
  •  | 
  •  

سؤال

أحتاج إلى كتابة تطبيق دلفي الذي يسحب الإدخالات من جداول مختلفة في قاعدة بيانات، وستكون الإدخالات المختلفة بعملات مختلفة.وبالتالي، أحتاج إلى إظهار عدد مختلف من المنازل العشرية وحرف عملة مختلف لكل نوع بيانات عملة (دولار، جنيه، يورو، إلخ) اعتمادًا على عملة العنصر الذي قمت بتحميله.

هل هناك طريقة لتغيير العملة بشكل شبه عالمي، أي لجميع بيانات العملة المعروضة في النموذج؟

هل كانت مفيدة؟

المحلول

حتى باستخدام نفس العملة، قد يتعين عليك عرض القيم بتنسيق مختلف (الفواصل على سبيل المثال)، لذلك أوصي بربط 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، فاصل الألف، فاصل العشري، والأرقام العشرية للعملة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top