يمكنك تعديل النص ونمطه باستخدام النطاقات النصية، التي تمثلها النوع TextRange
. تمثل TextRange
جزءًا من النص داخل شكل أو ضمن خلية جدول. يؤدي استدعاء getText()
على شكل خلية أو جدول إلى عرض نطاق نصي يغطي النص بأكمله.
إذا كنت تستخدم طرقًا تعمل على تعديل كيفية احتواء النص داخل الشكل، فسيتم إلغاء تنشيط أية إعدادات للاحتواء التلقائي يتم تطبيقها على الشكل.
استخدام نطاقات النصوص
يحتوي النطاق النصي على فهرسين يحددان جزء النص الذي يغطيه نطاق النص: فهرس البدء وفهرس النهاية. يمكنك تحديد هذه الفهارس باستخدام الدالات getStartIndex()
وgetEndIndex()
.
لقراءة محتوى نطاق نصي، استخدِم الدالتين asString()
أو asRenderedString()
.
لاسترداد نطاق فرعي من داخل نطاق نصي، استخدم الدالة getRange()
.
ينشئ النص البرمجي التالي مربع نص في الشريحة الأولى ويعيّن محتوى النص على "مرحبًا أيها العالم!". ومن ثم يتم استرداد نطاق فرعي يتجاوز مجرد "مرحبًا".
نطاق النص الذي يعرضه شكل أو خلية جدول سيغطي النص بالكامل دائمًا، حتى إذا تم إدراج النص وحذفه. لذلك ينتج المثال أعلاه عبارات السجل التالية:
Start: 0; End: 13; Content: Hello world! Start: 0; End: 5; Content: Hello
إدراج النص وحذفه
يمكنك أيضًا إدراج الأشكال النصية وخلايا الجدول وحذفها باستخدام نطاقات نصية.
- يتيح لك
insertText()
وappendText()
إدراج نص. setText()
يستبدل نص نطاق النص بالنص المتوفر.- يحذف
clear()
النص من داخل نطاق نصي.
يوضح النص البرمجي التالي استخدام هذه الدوال:
ينشئ هذا النص البرمجي مربع نص في الشريحة الأولى ويعيّن محتوى النص على "مرحبًا أيها العالم!". ثم يحذف الأحرف من 6 إلى 11 ("العالم")، ويدرج النص "مجرة" في الفهرس 6 بدلاً من ذلك. ينتج عن المثال أعلاه عبارة السجل التالية:
Start: 0; End: 14; Content: Hello galaxy!
البحث والاستبدال
يمكنك استخدام الدالة replaceAllText()
في العرض التقديمي أو الصفحة لإجراء البحث
العام والاستبدال في العرض التقديمي بأكمله أو صفحة محدّدة.
تعرض الدالة find()
في TextRange مثيلات سلسلة ضمن النطاق. ويمكن استخدامها مع setText()
لإجراء البحث والاستبدال داخل شكل أو خلية جدول.
الفقرات، وعناصر القائمة، وعدد مرات الجري
توفر الدالة TextRange
دوال لعرض مجموعات مفيدة من الكيانات النصية.
وتتضمن بعض هذه الوظائف ما يلي:
getParagraphs(),
تقدم جميع الفقرات التي تتداخل مع نطاق النص. والفقرة عبارة عن تسلسل من النص ينتهي بحرف السطر الجديد "\n".getListParagraphs(),
الذي يعرض عناصر القائمة في نطاق النص الحالي.getRuns(),
الذي يوفر النص الذي يتداخل مع نطاق النص الحالي. ويُعد التشغيل النصي جزءًا من النص حيث يكون لكل الأحرف نمط النص نفسه.
نمط النص
يحدد نمط النص طريقة عرض الأحرف النصية في العرض التقديمي، بما في ذلك الخط واللون والرابط التشعّبي.
تقدّم الدالة getTextStyle()
في نطاق نصي كائن TextStyle
المستخدَم لتصميم النص. يغطي الكائن TextStyle
النص نفسه كعنصر رئيسي TextRange
.
ينشئ المثال أعلاه مربع نص في الشريحة الأولى ويعيّن محتواها على "مرحبًا"، ثم يلحق النص "العالم!". النص الذي تم إلحاقه حديثًا
بخط غامق، ومرتبط بـ www.example.com
، وتم تعيين لونه إلى
أحمر.
عند قراءة الأنماط، تعرض الدالة قيمة خالية إذا كان النطاق يتضمن قيمًا متعددة للنمط. لذلك ينتج النموذج أعلاه عبارات السجل التالية:
Text: Hello; Bold: false Text: world!; Bold: true Text: Hello world!; Bold: null
هناك العديد من الأنماط الأخرى التي يمكن تطبيقها على النص. يمكن العثور على مزيد من التفاصيل
في وثائق TextStyle
المرجعية.
نمط الفقرة
تنطبق أنماط الفقرات على فقرات كاملة وتتضمن عناصر مثل محاذاة النص وتباعد الأسطر. توفّر الدالة getParagraphStyle() في TextRange
كائن ParagraphStyle
لتنسيق جميع الفقرات التي تتداخل مع نطاق النص الرئيسي.
في المثال التالي يتم إنشاء مربع نص في الشريحة الأولى يحتوي على أربع فقرات، ثم تتم محاذاة أول ثلاث فقرات إلى الوسط.
تصميم القائمة
على غرار ParagraphStyle
، يمكن استخدام ListStyle
لتصميم جميع الفقرات التي تتداخل مع نطاق النص الرئيسي.
في المثال السابق يتم إنشاء مربع نص في الشريحة الأولى يحتوي على أربع فقرات: يتم وضع مسافة بادئة للفقرة الثانية مرة واحدة كما يتم وضع مسافة بادئة للفقرة الثالثة مرتين. ثم يتم تطبيق قائمة إعداد مسبق على جميع الفقرات. وأخيرًا، يتم تسجيل مستوى تداخل كل فقرة. (يأتي مستوى تداخل الفقرة من عدد علامات التبويب قبل نص الفقرة.) لذلك ينتج النص البرمجي أعلاه عبارات السجل التالية:
Paragraph 1's nesting level: 0 Paragraph 2's nesting level: 1 Paragraph 3's nesting level: 2 Paragraph 4's nesting level: 0