يمكنك تعديل النص وتصميمه باستخدام النطاقات النصية التي يمثلها النوع TextRange
. تمثل TextRange
مقطعًا من النص داخل شكل أو
داخل خلية جدول. يؤدي استدعاء getText()
على خلية شكل أو جدول إلى عرض
نطاق نصي يغطي النص بأكمله.
إذا كنت تستخدم طرقًا لتعديل كيفية احتواء النص داخل شكل ما، فسيتم إلغاء تنشيط أي إعدادات للاحتواء التلقائي المطبقة على الشكل.
استخدام نطاقات نصية
يشتمل النطاق النصي على فهرسَين يحدّدان مقطع النص الذي يغطيه نطاق نصي: فهرس البدء وفهرس النهاية. يمكنك تحديد هذه الفهارس باستخدام الدالتَين getStartIndex()
وgetEndIndex()
.
لقراءة محتوى نطاق نصي، استخدِم الدالتَين asString()
أو asRenderedString()
.
لاسترداد نطاق فرعي من داخل نطاق نصي، استخدم الدالة getRange()
.
ينشئ النص البرمجي التالي مربع نص في الشريحة الأولى ويضبط محتوى النص على "Hello world!". ثم تسترد نطاقًا فرعيًا يمتد فقط على كلمة "مرحبًا".
سيغطي نطاق النص الذي تعرضه خلية شكل أو جدول دائمًا النص بالكامل، حتى إذا تم إدراج النص وحذفه. لذا فإن المثال أعلاه ينتج عن بيانات السجل التالية:
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(),
التي توفِّر عمليات تنفيذ النص التي تتداخل مع نطاق النص الحالي. text run هو جزء من نص يكون فيه جميع الأحرف نفس نمط النص.
نمط النص
يحدد نمط النص عرض أحرف النص في العرض التقديمي، بما في ذلك الخط واللون والارتباط التشعبي.
توفر الدالة 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