FormCalc Values and References

تنفيذ FormCalc العام مع EnableJavaScript ينفّذ مراجع كائنات صريحة عبر Ref(value)، بينما إعلانات المتغيرات العادية وسائط الدوال العادية تنسخ قيم الكائنات

معاملات Ref ونتيجتها

الواصل إلى كائن نموذج قائم يصير handle كائنًا؛ وتمرير handle قائم يحفظ هويته، والوسيط null ينتج handle فارغًا، وسائط scalar الأخرى تعيد قيمتها الـ scalar

المراجع توفر خصائص وأساليب العقد العادية مثل rawValue وparent وname وresolveNode وresolveNodes

وسائط scalar المدمجة تفك handles، والدوال التجميعية تستهلك القيم المُشار إليها، وhandles الفارغة تحفظ دلالات الحساب والسلسلة للـ null؛ وExists تعيد 0 لـ handle فارغ

var copied = target
target = 8
other = copied

var p = Ref(target)
p = 9
var q = p
q = 10

الكتلة الأولى تحفظ القيمة السابقة لـ target في copied؛ والكتلة الثانية تكتب في target عبر handleين يشيران إلى الكائن نفسه

الإسناد والفصل

الإسنادالسلوك
p = Ref(other)يعيد ربط p بالكائن الآخر
p = 5 عندما يكون p مرجعًايكتب 5 في الكائن المُشار إليه ويحفظ الـ handle
p = Null() عندما يكون p مرجعًايمسح قيمة الكائن المُشار إليه ويحفظ الـ handle
p = Ref(Null())يفصل p ويعطي المتغير قيمة null
p = 5 بعد الفصليضبط المتغير نفسه إلى 5

إعادة إعلان المتغيرات وسائط دوال المستخدم تطبق قواعد النسخ أو المرجع نفسها؛ والدوال يمكنها استقبال المراجع الصريحة وإعادتها وتأهيلها

المساواة والهوية

المساواة وعدمها تقارنان هوية الكائن الثابتة عندما يكون كلا الطرفين مرجعين؛ وأطراف الكائنات العادية تقارن قيمها، والنتيجة عددية 1 أو 0

حقلان يحتويان النص نفسه يقارنان متساويين بالقيمة، لكن Ref(first) eq Ref(second) تعيد 0 عندما يكونان حقلين مختلفين

النسخ المتكررة وhandles المحفوظة

كائن سكربت يمكنه حفظ handle صريح عبر الأحداث؛ والـ handle يحل عقدة النموذج الحالية بهوية ثابتة، فإعادة ترتيب subform متكرر تحفظ النسخة المنتقاة

استخدام handle بعد إزالة نسخته يثير خطأ؛ ومعاملات بيئة التشغيل تستعيد عدد النسخ وقيم الحقول وحالة كائن السكربت عندما يجهض ذلك الخطأ الحدث

بيئة التشغيل تزوّد هويات القالب والبيانات الثابتة تلقائيًا؛ ومستدعيو الأحداث المباشرون الذين يحذفون TXFAEventBinding.Identity يتلقون هوية فهرس ارتباط فريدة وعليهم تزويد هويات ثابتة صريحة عندما يتغيّر ترتيب الربط

الترحيل

التنفيذ العام الأقدم كان يحفظ كائنات العقد العادية في إعلانات المتغيرات؛ استبدل var p=target بـ var p=Ref(target) عندما يجب أن يبقى p handle عقدة

نتائج مساواة FormCalc العام تستخدم الآن 1 و0 بدلًا من النص boolean بـ JavaScript؛ والشيفرة التي ربطت نتائج المساواة ينبغي أن تتوقع التمثيل العددي

واجهات مرتبطة

Eval الديناميكية, HPDFXFACompileFormCalcEvent, TXFAEventBinding وبيئة تشغيل XFA التفاعلية