العمل مع الأنماط

العمل مع الأنماط

العمل مع الأنماط

يوضح هذا الدليل كيفية العمل مع أنماط الفقرات، الأحرف، الجداول، والقوائم في Aspose.Words FOSS لـ .NET — البحث عن الأنماط المدمجة والمخصصة وتطبيقها، وتكوين التنسيق الشرطي حسب المنطقة لأنماط الجداول.

كائن Style يمثل نمطًا مدمجًا أو معرفًا من قبل المستخدم — مجموعة مسماة من تنسيقات الفقرة، الخط، والقائمة التي يطبقها Word عندما يتم تعيين هذا النمط لفقرة أو مقطع. كل مستند يُظهر أنماطه عبر خاصية Document.Styles، التي تُعيد StyleCollection. تُمثَّل أنماط الجداول بواسطة TableStyle، وهي فئة فرعية من Style تضيف تنسيقًا خاصًا بالجداول وتنسيقًا شرطيًا حسب المنطقة عبر ConditionalStyleCollection.


أنواع الأنماط والتعريف

لكل Style خاصية Type من النوع StyleType، والتي تكون إحدى Paragraph، Character، Table أو List — مطابقةً لأربعة أنواع الأنماط التي يدعمها Word. تحمل الأنماط المدمجة أيضًا قيمة تعداد StyleIdentifier مستقلة عن اللغة (على سبيل المثال قيم تمثّل العناوين، التأكيد، وأنماط الروابط) بحيث يمكن للشفرة البحث عن نمط مدمج دون الاعتماد على اسمه المعروض بلغة معينة. يتوفر الاسم القابل للقراءة للإنسان لل نمط عبر Style.Name، وتُعيد Style.Aliases أي أسماء بديلة يتعرف عليها Word لنفس النمط. يُبلغ Style.BuiltIn عما إذا كان النمط يأتي مع Word نفسه أم تم تعريفه في المستند، ويُبلغ Style.IsHeading عما إذا كان النمط أحد أنماط العناوين المدمجة.

الوصول إلى مجموعة الأنماط وإدارتها

StyleCollection هي مجموعة جميع كائنات Style — المدمجة والمخصصة — المرتبطة بمستند، وتُصل إليها عبر Document.Styles. استرجع نمطًا بناءً على اسمه المعروض باستخدام الفهرس StyleCollection — styles[name] — أو استرجع نمطًا مدمجًا بناءً على StyleIdentifier المستقل عن اللغة باستخدام نفس الفهرس — styles[sti] — وهو أكثر موثوقية من البحث عن الاسم عبر المستندات المكتوبة بلغات مختلفة. تُنشأ الأنماط الجديدة باستخدام StyleCollection.Add(type, name)، مع تحديد StyleType والاسم، ويمكن تكرار نمط موجود إلى المجموعة باستخدام StyleCollection.AddCopy(style). يُبلغ StyleCollection.Count عن عدد الأنماط التي يحتويها المستند، وتُظهر المجموعة أيضًا DefaultFont وDefaultParagraphFormat، اللذين يصفان التنسيق الافتراضي على مستوى المستند الذي يرثه المحتوى الجديد قبل تطبيق أي نمط صريح. يُزيل StyleCollection.ClearQuickStyleGallery() جميع الأنماط من معرض الأنماط السريعة في واجهة Word دون حذف الأنماط نفسها.

تطبيق الأنماط على الفقرات والـRuns

كائنات التنسيق التي يمكنها حمل نمط تكشف عن كلٍ من خاصية Style (كائن Style نفسه) وخاصية StyleName (اختصار يُحل أو يُنشئ نمطًا بالاسم). ParagraphFormat.Style وParagraphFormat.StyleName تطبقان نمط فقرة، بينما Font.Style وFont.StyleName تطبقان نمط حرف لتنسيق الـrun. الخصائص LinkedStyleName وBaseStyleName وNextParagraphStyleName الخاصة بالنمط تصف كيف يرتبط بالأنماط الأخرى: BaseStyleName يحدد اسم النمط الذي يرث منه تنسيق غير مُحدد، وLinkedStyleName يحدد اسم نمط الفقرة/الحرف المزدوج (كما يفعل Word للأنماط المدمجة مثل Heading 1 والنمط الحرفي المرتبط به)، وNextParagraphStyleName يحدد اسم النمط الذي يعيّنه Word لفقرة جديدة تُكتب بعد فقرة تستخدم هذا النمط.

أنماط الجداول والتنسيق الشرطي

TableStyle يوسّع Style بخصائص تخطيط الجدول مثل Alignment، CellSpacing، LeftIndent، Shading، VerticalAlignment، والمسافات الداخلية (LeftPadding، RightPadding، TopPadding، BottomPadding)، بالإضافة إلى RowStripe وColumnStripe، اللذين يتحكمان في عدد الصفوف أو الأعمدة التي يتكرر فيها نمط الشرائط. بخلاف تنسيق الجدول الموحد، يُعيد TableStyle.ConditionalStyles كائن ConditionalStyleCollection يحتوي على ConditionalStyle واحد لكل منطقة في الجدول — FirstRow، LastRow، FirstColumn، LastColumn، OddRowBanding، EvenRowBanding، OddColumnBanding، EvenColumnBanding، والخلايا الأربع الزاوية (TopLeftCell، TopRightCell، BottomLeftCell، BottomRightCell). كل ConditionalStyle يحمل Font وParagraphFormat وShading وBorders الخاصة به، بالإضافة إلى المسافات الداخلية للخلية، وتُظهر خاصية Type أي منطقة ConditionalStyleType تمثّلها. ConditionalStyle.ClearFormatting() وConditionalStyleCollection.ClearFormatting() يعيدان ضبط التنسيق لمنطقة واحدة أو لمجموعة المناطق الشرطية بأكملها.

بيانات النمط الوصفية وعلامات السلوك

عدة خصائص منطقية ورقمية على Style تتحكم في كيفية تعامل Word مع النمط في واجهة المستخدم بدلاً من طريقة عرضه: Locked يمنع تغيير النمط عندما تكون حماية التنسيق مفعلة، وIsQuickStyle يتحكم فيما إذا كان يظهر في معرض الأنماط السريعة، وAutomaticallyUpdate يجعل النمط يعيد تعريف نفسه من التنسيق المباشر المطبق يدويًا، وSemiHidden وUnhideWhenUsed يتحكمان في ظهور النمط في قائمة الأنماط قبل وبعد الاستخدام الأول، وPriority يؤثر على ترتيب الفرز في المعرض. كما يكشف النمط عن خصائص List وListFormat عندما يحدد ترقيم القوائم، وStyle.Remove() يحذف النمط من StyleCollection الخاص به.


نصائح وأفضل الممارسات

  • يفضّل استخدام الفهرس StyleCollection مع قيمة StyleIdentifier بدلاً من البحث بالاسم عند العثور على نمط مدمج — الأسماء محلية، لكن قيم StyleIdentifier ليست كذلك.
  • قم بتعيين BaseStyleName لبناء تسلسلات هرمية للأنماط (على سبيل المثال، مجموعة من أنماط العناوين التي جميعها ترث اختيارات الخط من نمط أساسي واحد) بدلاً من تكرار التنسيق على كل نمط.
  • عند نسخ نمط بين المستندات، استخدم StyleCollection.AddCopy(style) بدلًا من قراءة وإعادة تطبيق كل خاصية تنسيق يدويًا.
  • قم بتكوين مناطق TableStyle.ConditionalStyles للجداول المتناوبة بدلاً من تنسيق الصفوف المتناوبة يدويًا في الشيفرة — يتم تطبيق تنسيق كل منطقة ConditionalStyle بناءً على ConditionalStyleType الخاصة بها، وليس عن طريق ضبط تنسيق مباشر على الصفوف الفردية.
  • تحقق من Style.BuiltIn قبل إزالة أو إعادة تسمية نمط برمجيًا؛ عادةً ما يتم الإشارة إلى الأنماط المدمجة بالاسم في أماكن أخرى من المستند.

المشكلات الشائعة

المشكلةالسببالإصلاح
StyleCollection indexer يُرجِع null عند البحث عن اسماسم النمط غير موجود في هذا المستند، أو أن نمطًا مدمجًا لم يُستخدم بعد لذا لم يُنشئه Wordتحقق من Style.Aliases للأسماء البديلة، أو استخدم الفهرس StyleCollection مع StyleIdentifier للأنماط المدمجة بدلاً من ذلك
ضبط StyleName بشكل غير متوقع ينشئ نمطًا جديدًاStyleName ينشئ النمط المُسمّى إذا لم يكن موجودًا بالفعل في المجموعةاستخدم الفهرس StyleCollection أولاً لتأكيد وجود النمط، أو عيّن كائن Style مباشرةً عبر الخاصية Style
تظليل الجدول لا يظهر بعد تطبيق TableStyleلم يتم أبدًا تكوين مناطق التنسيق الشرطي (OddRowBanding، EvenRowBanding، وما إلى ذلك) على TableStyle.ConditionalStylesعيّن التنسيق على الإدخالات ConditionalStyle ذات الصلة في ConditionalStyleCollection
تغيّر النمط لا يؤثر على المحتوى الذي يستخدم النمط بالفعلتم تطبيق التنسيق المباشر (يدوي) فوق النمط ويأخذ الأسبقيةامسح التنسيق المباشر على المقاطع/الفقرات المتأثرة، أو اضبط Style.AutomaticallyUpdate

FAQ

كيف أحصل على مجموعة جميع الأنماط في مستند؟

اقرأ Document.Styles، التي تُرجِع StyleCollection يحتوي على كل Style المدمجة والمُعَرَّفة من قبل المستخدم في ذلك المستند.

ما الفرق بين Style و StyleIdentifier؟

Style هو كائن النمط الفعلي مع تنسيقه؛ StyleIdentifier هو قيمة تعداد غير معتمدة على اللغة تُستخدم للبحث عن محدد معين مدمج نمط بغض النظر عن لغة المستند، عبر StyleCollection فهرس.

كيف تختلف أنماط الجداول عن أنماط الفقرات أو الأحرف؟

TableStyle هو فئة فرعية من Style تضيف خصائص تخطيط الجدول (Alignment, CellSpacing, padding) ومجموعة ConditionalStyles لتنسيق خاص بالمناطق مثل الصفوف المتناوبة، صفوف العناوين، والخلايا الزاوية — مفاهيم تنسيق لا تنطبق على أنماط الفقرات أو الأحرف.

هل يمكنني إنشاء نمط جديد تمامًا بدلاً من تعديل نمط موجود؟

نعم — استدعِ StyleCollection.Add(type, name) مع StyleType المطلوب واسم جديد لإنشاء نمط فارغ، ثم قم بتعيين خصائص تنسيقه (Font, ParagraphFormat، وما إلى ذلك لأنماط الفقرات/الأحرف).

كيف يمكنني تكرار نمط، بما في ذلك من مستند آخر؟

استخدم StyleCollection.AddCopy(style)، مع تمرير كائن Style (يمكن أن يأتي من StyleCollection الخاص بـ Document مختلف) لإضافة نسخة منه إلى المجموعة المستهدفة.


API Reference ملخص

فئة/طريقةوصف
Styleنمط فقرة أو حرف أو جدول أو قائمة مدمج أو معرف من قبل المستخدم
StyleCollectionمجموعة جميع الأنماط في المستند، يمكن الوصول إليها عبر Document.Styles
مُفهرس StyleCollection حسب الاسمابحث عن نمط حسب اسم العرض الخاص به، على سبيل المثال styles["Heading 1"]
مُفهرس StyleCollection حسب المعرفابحث عن نمط مدمج حسب معرف غير معتمد على اللغة، على سبيل المثال styles[StyleIdentifier.Heading1]
StyleCollection.Add(type, name)أنشئ نمطًا جديدًا وفارغًا من StyleType المعطى
StyleCollection.AddCopy(style)انسخ نمطًا موجودًا إلى هذه المجموعة
StyleTypeEnum يميز الأنماط Paragraph وCharacter وTable وList
StyleIdentifierمعرّف غير معتمد على الإعدادات المحلية لنمط مدمج
TableStyleفئة فرعية من Style لتنسيق الجداول، تشمل تنسيقًا شرطيًا لكل منطقة
ConditionalStyleCollectionمجموعة إدخالات ConditionalStyle لكل منطقة على TableStyle
ConditionalStyleتنسيق (الخط، تنسيق الفقرة، التظليل، الحدود، الحشو) لمنطقة جدول واحدة
ConditionalStyleTypeتعداد يحدد إلى أي منطقة جدول ينطبق ConditionalStyle

انظر أيضاً

 العربية