يمكنك تعديل النص وتنسيقه باستخدام نطاقات النص التي يمثّلها النوع
TextRange
. يمثّل TextRange
جزءًا من النص داخل شكل أو داخل خلية جدول. يؤدي استدعاء getText()
على شكل أو خلية جدول إلى عرض نطاق نصي يغطي النص بأكمله.
إذا كنت تستخدم طرقًا تعدّل طريقة احتواء النص داخل شكل، سيتم إيقاف أي إعدادات احتواء تلقائي تم تطبيقها على الشكل.
استخدام نطاقات النصوص
يحتوي نطاق النص على فهرسين يحدّدان جزء النص الذي يغطّيه نطاق النص، وهما فهرس البداية وفهرس النهاية. يمكنك تحديد هذه الفهارس باستخدام الدالتَين getStartIndex()
وgetEndIndex()
.
لقراءة محتوى نطاق نصي، استخدِم الدالتَين asString()
أو asRenderedString()
.
لاسترداد نطاق فرعي من داخل نطاق نصي، استخدِم الدالة getRange()
.
ينشئ النص البرمجي التالي مربّع نص في الشريحة الأولى ويضبط محتوى النص على "Hello world!". ثم يسترد نطاقًا فرعيًا يشمل كلمة "Hello" فقط.
سيتضمّن نطاق النص الذي تعرضه خلية شكل أو جدول النص بأكمله دائمًا، حتى إذا تم إدراج نص وحذفه. لذلك، ينتج المثال أعلاه عبارات السجلّ التالية:
Start: 0; End: 13; Content: Hello world! Start: 0; End: 5; Content: Hello
إدراج النص وحذفه
يمكنك أيضًا إدراج أشكال نصية وخلايا جداول وحذفها باستخدام نطاقات نصية.
- تتيح لك الرمزان
insertText()
وappendText()
إدراج نص. - تستبدل الدالة
setText()
نص نطاق نصي بالنص المقدَّم. - تحذف الدالة
clear()
النص من داخل نطاق نصي.
يوضّح النص البرمجي التالي كيفية استخدام هذه الدوال:
ينشئ هذا النص البرمجي مربّع نص في الشريحة الأولى ويضبط محتوى النص على "Hello world!". بعد ذلك، يتم حذف الأحرف من 6 إلى 11 ("world")، وإدراج النص "galaxy" في الفهرس 6 بدلاً من ذلك. ينتج المثال أعلاه عبارة السجلّ التالية:
Start: 0; End: 14; Content: Hello galaxy!
البحث والاستبدال
استخدِم وظيفة replaceAllText()
في العرض التقديمي أو الصفحة لإجراء عملية بحث واستبدال شاملة في العرض التقديمي بأكمله أو في صفحة معيّنة.
تعرض الدالة find()
في TextRange مثيلات سلسلة ضمن النطاق. يمكن استخدامها مع setText()
لتنفيذ عملية البحث والاستبدال داخل شكل أو خلية جدول.
الفقرات وعناصر القوائم وعناصر التشغيل
توفر TextRange
دوالاً لعرض مجموعات مفيدة من الكيانات النصية.
تشمل بعض هذه الوظائف ما يلي:
-
getParagraphs(),
الذي يوفّر جميع الفقرات التي تتداخل مع النطاق النصي. الفقرة هي تسلسل من النص ينتهي بحرف السطر الجديد "\n". -
getListParagraphs(),
التي تعرض عناصر القائمة في نطاق النص الحالي. -
getRuns(),
الذي يوفّر مقاطع النص التي تتداخل مع نطاق النص الحالي. مقطع النص هو جزء من النص تكون فيه جميع الأحرف بنفس نمط النص.
ضبط نمط النص
يحدّد نمط النص طريقة عرض أحرف النص في العرض التقديمي، بما في ذلك الخط واللون والربط التشعّبي.
توفر الدالة getTextStyle()
لنطاق نصي كائن TextStyle
يُستخدم لتنسيق النص. يغطّي العنصر TextStyle
النص نفسه الذي يغطّيه العنصر الرئيسي TextRange
.
ينشئ المثال أعلاه أولاً مربّع نص في الشريحة الأولى ويضبط محتواه على "Hello "، ثم يضيف النص "world!". يتم تمييز النص الملحق حديثًا بخط غليظ، ويتم ربطه بـ 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