Класс Aspose::Words::Fields::FieldIndex

FieldIndex class

Реализует поле INDEX. Чтобы узнать больше, посетите статью документации Working with Fields.

class FieldIndex : public Aspose::Words::Fields::Field,
                   public Aspose::Words::Fields::IFieldCodeTokenInfoProvider

Методы

МетодОписание
get_BookmarkName()Получает или задает имя закладки, отмечающей часть документа, используемую для построения указателя.
get_CrossReferenceSeparator()Получает или задает последовательность символов, используемую для разделения перекрёстных ссылок и других записей.
get_DisplayResult()Получает текст, представляющий отображаемый результат поля.
get_End() constПолучает узел, представляющий конец поля.
get_EntryType()Получает или задает тип записи указателя, используемый при построении указателя.
get_FieldEnd() constПолучает узел, представляющий конец поля.
get_FieldStart() constПолучает узел, представляющий начало поля.
get_Format()Получает объект FieldFormat, который предоставляет типизированный доступ к форматированию поля.
get_HasPageNumberSeparator()Возвращает значение, указывающее, переопределён ли разделитель номеров страниц в коде поля.
get_HasSequenceName()Возвращает значение, указывающее, следует ли использовать последовательность при построении результата поля.
get_Heading()Получает или задает заголовок, который появляется в начале каждого набора записей для заданной буквы.
get_IsDirty()Получает или задает, является ли текущий результат поля более некорректным (устаревшим) из‑за других изменений, внесённых в документ.
get_IsLocked()Получает или задает, заблокировано ли поле (не должно пересчитывать свой результат).
get_LanguageId()Получает или задает идентификатор языка, используемый для создания указателя.
get_LetterRange()Получает или задает диапазон букв, ограничивающий указатель.
get_LocaleId()Получает или задает LCID поля.
get_NumberOfColumns()Получает или задает количество колонок на страницу, используемое при построении указателя.
get_PageNumberListSeparator()Получает или задает последовательность символов, используемую для разделения двух номеров страниц в списке номеров страниц.
get_PageNumberSeparator()Получает или задает последовательность символов, используемую для разделения записи указателя и её номера страницы.
get_PageRangeSeparator()Получает или задает последовательность символов, используемую для разделения начала и конца диапазона страниц.
get_Result()Получает или задает текст, находящийся между разделителем поля и его концом.
get_RunSubentriesOnSameLine()Получает или задает, следует ли размещать подпункты в той же строке, что и основной пункт.
get_Separator()Получает узел, представляющий разделитель поля. Может быть null.
get_SequenceName()Получает или задает имя последовательности, номер которой включается в номер страницы.
get_SequenceSeparator()Получает или задает последовательность символов, используемую для разделения номеров последовательностей и номеров страниц.
get_Start() constПолучает узел, представляющий начало поля.
virtual get_Type() constПолучает тип поля Microsoft Word.
get_UseYomi()Получает или задает, включить ли использование текста йоми для записей указателя.
GetFieldCode()Возвращает текст между началом поля и разделителем поля (или концом поля, если разделитель отсутствует). Включены как код поля, так и результат дочерних полей.
GetFieldCode(bool)Возвращает текст между началом поля и разделителем поля (или концом поля, если разделитель отсутствует).
GetType() const override
Is(const System::TypeInfo&) const override
virtual Remove()Удаляет поле из документа. Возвращает узел сразу после поля. Если конец поля является последним дочерним элементом его родительского узла, возвращает родительский абзац. Если поле уже удалено, возвращает null.
set_BookmarkName(const System::String&)Сеттер для Aspose::Words::Fields::FieldIndex::get_BookmarkName.
set_CrossReferenceSeparator(const System::String&)Сеттер для Aspose::Words::Fields::FieldIndex::get_CrossReferenceSeparator.
set_EntryType(const System::String&)Сеттер для Aspose::Words::Fields::FieldIndex::get_EntryType.
set_Heading(const System::String&)Сеттер для Aspose::Words::Fields::FieldIndex::get_Heading.
set_IsDirty(bool)Сеттер для Aspose::Words::Fields::Field::get_IsDirty.
set_IsLocked(bool)Сеттер для Aspose::Words::Fields::Field::get_IsLocked.
set_LanguageId(const System::String&)Сеттер для Aspose::Words::Fields::FieldIndex::get_LanguageId.
set_LetterRange(const System::String&)Сеттер для Aspose::Words::Fields::FieldIndex::get_LetterRange.
set_LocaleId(int32_t)Сеттер для Aspose::Words::Fields::Field::get_LocaleId.
set_NumberOfColumns(const System::String&)Сеттер для Aspose::Words::Fields::FieldIndex::get_NumberOfColumns.
set_PageNumberListSeparator(const System::String&)Сеттер для Aspose::Words::Fields::FieldIndex::get_PageNumberListSeparator.
set_PageNumberSeparator(const System::String&)Сеттер для Aspose::Words::Fields::FieldIndex::get_PageNumberSeparator.
set_PageRangeSeparator(const System::String&)Сеттер для Aspose::Words::Fields::FieldIndex::get_PageRangeSeparator.
set_Result(const System::String&)Сеттер для Aspose::Words::Fields::Field::get_Result.
set_RunSubentriesOnSameLine(bool)Сеттер для Aspose::Words::Fields::FieldIndex::get_RunSubentriesOnSameLine.
set_SequenceName(const System::String&)Сеттер для Aspose::Words::Fields::FieldIndex::get_SequenceName.
set_SequenceSeparator(const System::String&)Сеттер для Aspose::Words::Fields::FieldIndex::get_SequenceSeparator.
set_UseYomi(bool)Сеттер для Aspose::Words::Fields::FieldIndex::get_UseYomi.
static Type()
Unlink()Выполняет отсоединение поля.
Update()Выполняет обновление поля. Вызывает исключение, если поле уже обновляется.
Update(bool)Выполняет обновление поля. Выбрасывает исключение, если поле уже обновляется.

Примеры

Показывает, как создать поле INDEX и затем использовать поля XE для заполнения его записями.

auto doc = System::MakeObject<Aspose::Words::Document>();
auto builder = System::MakeObject<Aspose::Words::DocumentBuilder>(doc);

// Создайте поле INDEX, которое будет отображать запись для каждого найденного в документе поля XE.
// Каждая запись будет отображать значение свойства Text поля XE слева
// и страницу, содержащую поле XE, справа.
// Если у полей XE одинаковое значение в их свойстве "Text",
// поле INDEX сгруппирует их в одну запись.
auto index = System::ExplicitCast<Aspose::Words::Fields::FieldIndex>(builder->InsertField(Aspose::Words::Fields::FieldType::FieldIndex, true));

// Настройте поле INDEX так, чтобы оно отображало только поля XE, находящиеся в пределах
// закладки с именем "MainBookmark" и у которых свойство "EntryType" имеет значение "A".
// Для полей INDEX и XE свойство "EntryType" использует только первый символ строкового значения.
index->set_BookmarkName(u"MainBookmark");
index->set_EntryType(u"A");

ASSERT_EQ(u" INDEX  \\b MainBookmark \\f A", index->GetFieldCode());

// На новой странице начните закладку с именем, соответствующим значению
// свойства "BookmarkName" поля INDEX.
builder->InsertBreak(Aspose::Words::BreakType::PageBreak);
builder->StartBookmark(u"MainBookmark");

// Поле INDEX подхватит эту запись, потому что она находится внутри закладки,
// и её тип записи также соответствует типу записи поля INDEX.
auto indexEntry = System::ExplicitCast<Aspose::Words::Fields::FieldXE>(builder->InsertField(Aspose::Words::Fields::FieldType::FieldIndexEntry, true));
indexEntry->set_Text(u"Index entry 1");
indexEntry->set_EntryType(u"A");

ASSERT_EQ(u" XE  \"Index entry 1\" \\f A", indexEntry->GetFieldCode());

// Вставьте поле XE, которое не появится в INDEX, потому что типы записей не совпадают.
builder->InsertBreak(Aspose::Words::BreakType::PageBreak);
indexEntry = System::ExplicitCast<Aspose::Words::Fields::FieldXE>(builder->InsertField(Aspose::Words::Fields::FieldType::FieldIndexEntry, true));
indexEntry->set_Text(u"Index entry 2");
indexEntry->set_EntryType(u"B");

// Закончите закладку и вставьте поле XE после неё.
// Оно того же типа, что и поле INDEX, но не появится
// поскольку находится за пределами границ закладки.
builder->EndBookmark(u"MainBookmark");
builder->InsertBreak(Aspose::Words::BreakType::PageBreak);
indexEntry = System::ExplicitCast<Aspose::Words::Fields::FieldXE>(builder->InsertField(Aspose::Words::Fields::FieldType::FieldIndexEntry, true));
indexEntry->set_Text(u"Index entry 3");
indexEntry->set_EntryType(u"A");

doc->UpdatePageLayout();
doc->UpdateFields();
doc->Save(get_ArtifactsDir() + u"Field.INDEX.XE.Filtering.docx");

Показывает, как заполнить поле INDEX записями с помощью полей XE и также изменить его внешний вид.

auto doc = System::MakeObject<Aspose::Words::Document>();
auto builder = System::MakeObject<Aspose::Words::DocumentBuilder>(doc);

// Создайте поле INDEX, которое будет отображать запись для каждого найденного в документе поля XE.
// Каждая запись будет отображать значение свойства Text поля XE слева,
// а номер страницы, содержащей поле XE, — справа.
// Если у полей XE одинаковое значение в их свойстве "Text",
// поле INDEX сгруппирует их в одну запись.
auto index = System::ExplicitCast<Aspose::Words::Fields::FieldIndex>(builder->InsertField(Aspose::Words::Fields::FieldType::FieldIndex, true));
index->set_LanguageId(u"1033");

// Установка значения этого свойства в "A" сгруппирует все записи по первой букве,
// и разместит эту букву в верхнем регистре над каждой группой.
index->set_Heading(u"A");

// Установите, чтобы таблица, созданная полем INDEX, охватывала 2 столбца.
index->set_NumberOfColumns(u"2");

// Установите, чтобы любые записи, начинающиеся с букв вне диапазона "a-c", были опущены.
index->set_LetterRange(u"a-c");

ASSERT_EQ(u" INDEX  \\z 1033 \\h A \\c 2 \\p a-c", index->GetFieldCode());

// Следующие два поля XE появятся под заголовком "A",
// при этом их соответствующее форматирование текста также будет применено к номерам страниц.
builder->InsertBreak(Aspose::Words::BreakType::PageBreak);
auto indexEntry = System::ExplicitCast<Aspose::Words::Fields::FieldXE>(builder->InsertField(Aspose::Words::Fields::FieldType::FieldIndexEntry, true));
indexEntry->set_Text(u"Apple");
indexEntry->set_IsItalic(true);

ASSERT_EQ(u" XE  Apple \\i", indexEntry->GetFieldCode());

builder->InsertBreak(Aspose::Words::BreakType::PageBreak);
indexEntry = System::ExplicitCast<Aspose::Words::Fields::FieldXE>(builder->InsertField(Aspose::Words::Fields::FieldType::FieldIndexEntry, true));
indexEntry->set_Text(u"Apricot");
indexEntry->set_IsBold(true);

ASSERT_EQ(u" XE  Apricot \\b", indexEntry->GetFieldCode());

// Оба следующих поля XE будут под заголовками "B" и "C" в содержании таблицы полей INDEX.
builder->InsertBreak(Aspose::Words::BreakType::PageBreak);
indexEntry = System::ExplicitCast<Aspose::Words::Fields::FieldXE>(builder->InsertField(Aspose::Words::Fields::FieldType::FieldIndexEntry, true));
indexEntry->set_Text(u"Banana");

builder->InsertBreak(Aspose::Words::BreakType::PageBreak);
indexEntry = System::ExplicitCast<Aspose::Words::Fields::FieldXE>(builder->InsertField(Aspose::Words::Fields::FieldType::FieldIndexEntry, true));
indexEntry->set_Text(u"Cherry");

// Поля INDEX сортируют все записи в алфавитном порядке, поэтому эта запись появится под "A" вместе с другими двумя.
builder->InsertBreak(Aspose::Words::BreakType::PageBreak);
indexEntry = System::ExplicitCast<Aspose::Words::Fields::FieldXE>(builder->InsertField(Aspose::Words::Fields::FieldType::FieldIndexEntry, true));
indexEntry->set_Text(u"Avocado");

// Эта запись не появится, потому что она начинается с буквы "D",
// что находится вне диапазона символов "a-c", определяемого свойством LetterRange поля INDEX.
builder->InsertBreak(Aspose::Words::BreakType::PageBreak);
indexEntry = System::ExplicitCast<Aspose::Words::Fields::FieldXE>(builder->InsertField(Aspose::Words::Fields::FieldType::FieldIndexEntry, true));
indexEntry->set_Text(u"Durian");

doc->UpdatePageLayout();
doc->UpdateFields();
doc->Save(get_ArtifactsDir() + u"Field.INDEX.XE.Formatting.docx");

См. также