EditableRangeEnd
محتويات
[
يخفي
]EditableRangeEnd class
يمثل نهاية النطاق القابل للتحرير في مستند Word.
لمعرفة المزيد، قم بزيارةنموذج كائن مستند Aspose.Words (DOM) مقالة توثيقية.
public sealed class EditableRangeEnd : Node
الخصائص
اسم | وصف |
---|---|
CustomNodeId { get; set; } | يحدد معرف العقدة المخصصة. |
virtual Document { get; } | الحصول على المستند الذي تنتمي إليه هذه العقدة. |
EditableRangeStart { get; } | المقابلةEditableRangeStart ، تم الاستلام بواسطة ID. |
Id { get; set; } | يحدد معرف النطاق القابل للتحرير. |
virtual IsComposite { get; } | إرجاعحقيقي إذا كانت هذه العقدة يمكن أن تحتوي على عقد أخرى. |
NextSibling { get; } | يحصل على العقدة التي تلي هذه العقدة مباشرة. |
override NodeType { get; } | إرجاعEditableRangeEnd . |
ParentNode { get; } | يحصل على الأصل المباشر لهذه العقدة. |
PreviousSibling { get; } | يحصل على العقدة التي تسبق هذه العقدة مباشرة. |
Range { get; } | إرجاع أRange الكائن الذي يمثل جزء المستند الموجود في هذه العقدة. |
طُرق
اسم | وصف |
---|---|
override Accept(DocumentVisitor) | يقبل الزائر. |
Clone(bool) | إنشاء نسخة مكررة من العقدة. |
GetAncestor(NodeType) | يحصل على السلف الأول للمحددNodeType . |
GetAncestor(Type) | الحصول على السلف الأول لنوع الكائن المحدد. |
virtual GetText() | الحصول على نص هذه العقدة وجميع أبنائها. |
NextPreOrder(Node) | الحصول على العقدة التالية وفقًا لخوارزمية اجتياز شجرة الطلب المسبق. |
PreviousPreOrder(Node) | الحصول على العقدة السابقة وفقًا لخوارزمية اجتياز شجرة الطلب المسبق. |
Remove() | يزيل نفسه من الأصل. |
ToString(SaveFormat) | تصدير محتوى العقدة إلى سلسلة بالتنسيق المحدد. |
ToString(SaveOptions) | تصدير محتوى العقدة إلى سلسلة باستخدام خيارات الحفظ المحددة. |
ملاحظات
يتكون النطاق الكامل القابل للتحرير في مستند Word من ملفEditableRangeStart
ومطابقةEditableRangeEnd
بنفس المعرف.
EditableRangeStart
وEditableRangeEnd
هي مجرد علامات داخل document تحدد أين يبدأ وينتهي النطاق القابل للتحرير.
استخدم الEditableRange
فئة كـ “واجهة” للعمل مع نطاق قابل للتحرير ككائن واحد.
النطاقات القابلة للتحرير حاليًا مدعومة فقط على المستوى المضمن، أي بالداخلParagraph
، لكن بداية النطاق القابل للتحرير ونهاية النطاق القابل للتحرير يمكن أن تكون في فقرات مختلفة.
أمثلة
يوضح كيفية تقييد حقوق تحرير النطاقات القابلة للتحرير لمجموعة/مستخدم محدد.
public void Visitor()
{
Document doc = new Document();
doc.Protect(ProtectionType.ReadOnly, "MyPassword");
DocumentBuilder builder = new DocumentBuilder(doc);
builder.Writeln("Hello world! Since we have set the document's protection level to read-only," +
" we cannot edit this paragraph without the password.");
// عندما نحمي المستندات من الكتابة، تسمح لنا النطاقات القابلة للتحرير باختيار مناطق محددة يمكن للمستخدمين تحريرها.
// هناك طريقتان متنافيتان لتضييق نطاق قائمة المحررين المسموح بهم.
// 1 - تحديد مستخدم:
EditableRange editableRange = builder.StartEditableRange().EditableRange;
editableRange.SingleUser = "john.doe@myoffice.com";
builder.Writeln($"This paragraph is inside the first editable range, can only be edited by {editableRange.SingleUser}.");
builder.EndEditableRange();
Assert.AreEqual(EditorType.Unspecified, editableRange.EditorGroup);
// 2 - حدد المجموعة التي يسمح للمستخدمين بالارتباط بها:
editableRange = builder.StartEditableRange().EditableRange;
editableRange.EditorGroup = EditorType.Administrators;
builder.Writeln($"This paragraph is inside the first editable range, can only be edited by {editableRange.EditorGroup}.");
builder.EndEditableRange();
Assert.AreEqual(string.Empty, editableRange.SingleUser);
builder.Writeln("This paragraph is outside the editable range, and cannot be edited by anybody.");
// طباعة تفاصيل ومحتويات كل نطاق قابل للتحرير في المستند.
EditableRangePrinter editableRangePrinter = new EditableRangePrinter();
doc.Accept(editableRangePrinter);
Console.WriteLine(editableRangePrinter.ToText());
}
/// <summary>
/// يجمع خصائص ومحتويات النطاقات القابلة للتحرير التي تمت زيارتها في سلسلة.
/// </summary>
public class EditableRangePrinter : DocumentVisitor
{
public EditableRangePrinter()
{
mBuilder = new StringBuilder();
}
public string ToText()
{
return mBuilder.ToString();
}
public void Reset()
{
mBuilder.Clear();
mInsideEditableRange = false;
}
/// <summary>
/// يتم الاتصال به عند مواجهة عقدة EditableRangeStart في المستند.
/// </summary>
public override VisitorAction VisitEditableRangeStart(EditableRangeStart editableRangeStart)
{
mBuilder.AppendLine(" -- Editable range found! -- ");
mBuilder.AppendLine("\tID:\t\t" + editableRangeStart.Id);
if (editableRangeStart.EditableRange.SingleUser == string.Empty)
mBuilder.AppendLine("\tGroup:\t" + editableRangeStart.EditableRange.EditorGroup);
else
mBuilder.AppendLine("\tUser:\t" + editableRangeStart.EditableRange.SingleUser);
mBuilder.AppendLine("\tContents:");
mInsideEditableRange = true;
return VisitorAction.Continue;
}
/// <summary>
/// يتم الاتصال به عند مواجهة عقدة EditableRangeEnd في المستند.
/// </summary>
public override VisitorAction VisitEditableRangeEnd(EditableRangeEnd editableRangeEnd)
{
mBuilder.AppendLine(" -- End of editable range --\n");
mInsideEditableRange = false;
return VisitorAction.Continue;
}
/// <summary>
/// يتم الاتصال به عند مواجهة عقدة التشغيل في المستند. يقوم هذا الزائر بتسجيل عمليات التشغيل التي تقع داخل النطاقات القابلة للتحرير فقط.
/// </summary>
public override VisitorAction VisitRun(Run run)
{
if (mInsideEditableRange) mBuilder.AppendLine("\t\"" + run.Text + "\"");
return VisitorAction.Continue;
}
private bool mInsideEditableRange;
private readonly StringBuilder mBuilder;
}
أنظر أيضا
- class Node
- مساحة الاسم Aspose.Words
- المجسم Aspose.Words