حقول النماذج القديمة
حقول النماذج القديمة
Aspose.Words FOSS لـ .NET يقرأ ويتعامل مع حقول النماذج القديمة في Word (قبل التحكم بالمحتوى) — حقول إدخال النص، ومربعات الاختيار، والقوائم المنسدلة — عبر الفئة FormField وثلاث فئات فرعية متخصصة للحقول في Aspose.Words.Fields.
قراءة قيم حقول النموذج
Document.Range.FormFields (وهو FormFieldCollection) يوفر وصولًا مباشرًا إلى كل حقل نموذج قديم ضمن نطاق دون الحاجة لتجوال شجرة العقد يدويًا. كل FormField يكشف عن Name (معرف بنمط العلامة المرجعية المستخدم للإشارة إلى الحقل)، Type (قيمة FieldType تحدد نوع حقل النموذج)، Result (القيمة الحالية)، Enabled، ونص المساعدة/الحالة عبر HelpText/OwnHelp وStatusText/OwnStatus. SetTextInputValue(newValue) يضبط قيمة جديدة لحقل إدخال النص مباشرة. يمكن الفهرسة في FormFieldCollection باسم العلامة المرجعية (مثال: formFields["BookmarkName"]) لاسترجاع حقل محدد، وRemove(formField) / RemoveAt(index) حذف الحقول من المجموعة.
أنواع حقول النص ومربعات الاختيار والقوائم المنسدلة
كل من الأنواع الثلاثة لحقول النموذج القديمة لها فئة مخصصة: FieldFormText (حقل FORMTEXT، المقابل لـ FieldType.FieldFormTextInput) لإدخال النص الحر، FieldFormCheckBox (حقل FORMCHECKBOX) لتبديل منطقي، وFieldFormDropDown (حقل FORMDROPDOWN) لقائمة الاختيارات. على العقدة الأساسية FormField، يتحكم TextInputType (قيمة TextFormFieldType — Regular، Number، Date، CurrentDate، CurrentTime أو Calculated) وTextInputFormat في كيفية تفسير وتنسيق قيمة حقل النص؛ MaxLength يحد من طول الإدخال؛ TextInputDefault يزودها بالقيمة الافتراضية. Checked وDefault تنطبق على حقول مربعات الاختيار، مع IsCheckBoxExactSize/CheckBoxSize يتحكمان في حجم العرض. تحمل حقول القوائم المنسدلة قائمة الخيارات في DropDownItems، وهو DropDownItemCollection يدعم Add، Insert، Remove، Contains، وIndexOf، بالإضافة إلى DropDownSelectedIndex للعنصر المختار حاليًا.
نصائح وأفضل الممارسات
- استخدم
Document.Range.FormFieldsبدلاً من تصفيةDocument.Range.Fieldsيدويًا حسب النوع — فهو نقطة الدخول المباشرة والذات نوع للحقول النمذجية القديمة. - عيّن
CalculateOnExitعندما يجب أن تُسبب قيمة حقل النموذج إعادة حساب الحقول التابعة فور مغادرة المستخدم له. FormField.EntryMacro/ExitMacroتشير إلى أسماء ماكرو VBA المُكوَّنة في المستند الأصلي — قراءتها لا تنفّذ أي كود ماكرو.- تحقّق من
TextInputTypeقبل تحليلResultلحقل نصي كرقم أو تاريخ — حقولRegularلا تفرض أي قيد تنسيق.
مشكلات شائعة
| المشكلة | السبب | الإصلاح |
|---|---|---|
فهرسة FormFieldCollection باسم العلامة المرجعية تُعيد null | اسم العلامة المرجعية لحقل النموذج لا يتطابق، أو أن الحقل غير موجود في النطاق الذي تم البحث فيه | تأكد من اسم العلامة المرجعية الدقيق عبر FormField.Name أثناء العد |
حالة خانة الاختيار لا تنعكس بعد ضبط Checked | المستند لم يتم حفظه بعد التعديل | احفظ المستند بعد التعديل؛ Checked يُقرأ عند الوصول التالي |
القائمة المنسدلة DropDownSelectedIndex خارج النطاق | الفهرس لا يتطابق مع عنصر في DropDownItems | تحقق من صحة الفهرس مقابل DropDownItems.Count قبل التعيين |
| قيمة حقل النص لم تُطبّق | تم استخدام تعيين خاصية مباشرة بدلاً من SetTextInputValue | استدعِ SetTextInputValue(newValue) على FormField |
FAQ
ما الفرق بين FormField و FieldFormText/FieldFormCheckBox/FieldFormDropDown؟
FormField هو العقدة العامة التي تمثّل أي حقل نموذج قديم، يتم الوصول إليها عبر Document.Range.FormFields. FieldFormText و FieldFormCheckBox و FieldFormDropDown هي الفئات الخاصة بكل حقل (تُشتق من Field) لكل نوع حقل عند العمل عبر مجموعة Field العامة بدلاً من ذلك.
كيف أحصل على جميع قيم حقول النموذج في المستند؟
عدّ Document.Range.FormFields واقرأ Name/Result على كل FormField.
هل يمكنني إضافة خيارات إلى حقل نموذج منسدلة؟
نعم — FormField.DropDownItems هو DropDownItemCollection يحتوي على Add(value)، Insert(index, value)، وRemove(name).
هل هذه هي نفسها عناصر التحكم في المحتوى الحديثة؟
لا. حقول النموذج القديمة (FORMTEXT، FORMCHECKBOX، FORMDROPDOWN) تسبق نموذج العلامة المهيكلة للمستند في Word (عنصر التحكم في المحتوى)؛ يمكن أن تظهر كلاهما في نفس المستند.
ملخص API Reference
| فئة / طريقة | وصف |
|---|---|
Document.Range.FormFields | الوصول المباشر إلى جميع حقول النموذج القديمة في نطاق |
FormField | عقدة حقل نموذج قديم عامة: الاسم، النوع، النتيجة، حالة التمكين |
FormFieldCollection | مجموعة من كائنات FormField؛ مفهرسة باسم الإشارة المرجعية، Remove() |
FieldFormText | FORMTEXT فئة الحقل |
FieldFormCheckBox | FORMCHECKBOX فئة الحقل |
FieldFormDropDown | FORMDROPDOWN فئة الحقل |
TextFormFieldType | تعداد لتنسيق إدخال حقل النص (Regular, Number, Date, إلخ.) |
DropDownItemCollection | قائمة قابلة للتحرير لخيارات حقل القائمة المنسدلة |