Aspose::Words::Fields::FieldIndex class
Contents
[
Hide
]FieldIndex class
Implements the INDEX field. To learn more, visit the Working with Fields documentation article.
class FieldIndex : public Aspose::Words::Fields::Field,
public Aspose::Words::Fields::IFieldCodeTokenInfoProvider
Methods
Method | Description |
---|---|
get_BookmarkName() | Gets or sets the name of the bookmark that marks the portion of the document used to build the index. |
get_CrossReferenceSeparator() | Gets or sets the character sequence that is used to separate cross references and other entries. |
get_DisplayResult() | Gets the text that represents the displayed field result. |
get_End() const | Gets the node that represents the field end. |
get_EntryType() | Gets or sets an index entry type used to build the index. |
get_FieldEnd() const | Gets the node that represents the field end. |
get_FieldStart() const | Gets the node that represents the start of the field. |
get_Format() | Gets a FieldFormat object that provides typed access to field’s formatting. |
get_HasPageNumberSeparator() | Gets a value indicating whether a page number separator is overridden through the field’s code. |
get_HasSequenceName() | Gets a value indicating whether a sequence should be used while the field’s result building. |
get_Heading() | Gets or sets a heading that appears at the start of each set of entries for any given letter. |
get_IsDirty() | Gets or sets whether the current result of the field is no longer correct (stale) due to other modifications made to the document. |
get_IsLocked() | Gets or sets whether the field is locked (should not recalculate its result). |
get_LanguageId() | Gets or sets the language ID used to generate the index. |
get_LetterRange() | Gets or sets a range of letters to which limit the index. |
get_LocaleId() | Gets or sets the LCID of the field. |
get_NumberOfColumns() | Gets or sets the number of columns per page used when building the index. |
get_PageNumberListSeparator() | Gets or sets the character sequence that is used to separate two page numbers in a page number list. |
get_PageNumberSeparator() | Gets or sets the character sequence that is used to separate an index entry and its page number. |
get_PageRangeSeparator() | Gets or sets the character sequence that is used to separate the start and end of a page range. |
get_Result() | Gets or sets text that is between the field separator and field end. |
get_RunSubentriesOnSameLine() | Gets or sets whether run subentries into the same line as the main entry. |
get_Separator() | Gets the node that represents the field separator. Can be null. |
get_SequenceName() | Gets or sets the name of a sequence whose number is included with the page number. |
get_SequenceSeparator() | Gets or sets the character sequence that is used to separate sequence numbers and page numbers. |
get_Start() const | Gets the node that represents the start of the field. |
virtual get_Type() const | Gets the Microsoft Word field type. |
get_UseYomi() | Gets or sets whether to enable the use of yomi text for index entries. |
GetFieldCode() | Returns text between field start and field separator (or field end if there is no separator). Both field code and field result of child fields are included. |
GetFieldCode(bool) | Returns text between field start and field separator (or field end if there is no separator). |
GetType() const override | |
Is(const System::TypeInfo&) const override | |
virtual Remove() | Removes the field from the document. Returns a node right after the field. If the field’s end is the last child of its parent node, returns its parent paragraph. If the field is already removed, returns null. |
set_BookmarkName(const System::String&) | Setter for Aspose::Words::Fields::FieldIndex::get_BookmarkName. |
set_CrossReferenceSeparator(const System::String&) | Setter for Aspose::Words::Fields::FieldIndex::get_CrossReferenceSeparator. |
set_EntryType(const System::String&) | Setter for Aspose::Words::Fields::FieldIndex::get_EntryType. |
set_Heading(const System::String&) | Setter for Aspose::Words::Fields::FieldIndex::get_Heading. |
set_IsDirty(bool) | Setter for Aspose::Words::Fields::Field::get_IsDirty. |
set_IsLocked(bool) | Setter for Aspose::Words::Fields::Field::get_IsLocked. |
set_LanguageId(const System::String&) | Setter for Aspose::Words::Fields::FieldIndex::get_LanguageId. |
set_LetterRange(const System::String&) | Setter for Aspose::Words::Fields::FieldIndex::get_LetterRange. |
set_LocaleId(int32_t) | Setter for Aspose::Words::Fields::Field::get_LocaleId. |
set_NumberOfColumns(const System::String&) | Setter for Aspose::Words::Fields::FieldIndex::get_NumberOfColumns. |
set_PageNumberListSeparator(const System::String&) | Setter for Aspose::Words::Fields::FieldIndex::get_PageNumberListSeparator. |
set_PageNumberSeparator(const System::String&) | Setter for Aspose::Words::Fields::FieldIndex::get_PageNumberSeparator. |
set_PageRangeSeparator(const System::String&) | Setter for Aspose::Words::Fields::FieldIndex::get_PageRangeSeparator. |
set_Result(const System::String&) | Setter for Aspose::Words::Fields::Field::get_Result. |
set_RunSubentriesOnSameLine(bool) | Setter for Aspose::Words::Fields::FieldIndex::get_RunSubentriesOnSameLine. |
set_SequenceName(const System::String&) | Setter for Aspose::Words::Fields::FieldIndex::get_SequenceName. |
set_SequenceSeparator(const System::String&) | Setter for Aspose::Words::Fields::FieldIndex::get_SequenceSeparator. |
set_UseYomi(bool) | Setter for Aspose::Words::Fields::FieldIndex::get_UseYomi. |
static Type() | |
Unlink() | Performs the field unlink. |
Update() | Performs the field update. Throws if the field is being updated already. |
Update(bool) | Performs a field update. Throws if the field is being updated already. |
Examples
Shows how to create an INDEX field, and then use XE fields to populate it with entries.
auto doc = System::MakeObject<Aspose::Words::Document>();
auto builder = System::MakeObject<Aspose::Words::DocumentBuilder>(doc);
// Create an INDEX field which will display an entry for each XE field found in the document.
// Each entry will display the XE field's Text property value on the left side
// and the page containing the XE field on the right.
// If the XE fields have the same value in their "Text" property,
// the INDEX field will group them into one entry.
auto index = System::ExplicitCast<Aspose::Words::Fields::FieldIndex>(builder->InsertField(Aspose::Words::Fields::FieldType::FieldIndex, true));
// Configure the INDEX field only to display XE fields that are within the bounds
// of a bookmark named "MainBookmark", and whose "EntryType" properties have a value of "A".
// For both INDEX and XE fields, the "EntryType" property only uses the first character of its string value.
index->set_BookmarkName(u"MainBookmark");
index->set_EntryType(u"A");
ASSERT_EQ(u" INDEX \\b MainBookmark \\f A", index->GetFieldCode());
// On a new page, start the bookmark with a name that matches the value
// of the INDEX field's "BookmarkName" property.
builder->InsertBreak(Aspose::Words::BreakType::PageBreak);
builder->StartBookmark(u"MainBookmark");
// The INDEX field will pick up this entry because it is inside the bookmark,
// and its entry type also matches the INDEX field's entry type.
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());
// Insert an XE field that will not appear in the INDEX because the entry types do not match.
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");
// End the bookmark and insert an XE field afterwards.
// It is of the same type as the INDEX field, but will not appear
// since it is outside the bookmark's boundaries.
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");
Shows how to populate an INDEX field with entries using XE fields, and also modify its appearance.
auto doc = System::MakeObject<Aspose::Words::Document>();
auto builder = System::MakeObject<Aspose::Words::DocumentBuilder>(doc);
// Create an INDEX field which will display an entry for each XE field found in the document.
// Each entry will display the XE field's Text property value on the left side,
// and the number of the page that contains the XE field on the right.
// If the XE fields have the same value in their "Text" property,
// the INDEX field will group them into one entry.
auto index = System::ExplicitCast<Aspose::Words::Fields::FieldIndex>(builder->InsertField(Aspose::Words::Fields::FieldType::FieldIndex, true));
index->set_LanguageId(u"1033");
// Setting this property's value to "A" will group all the entries by their first letter,
// and place that letter in uppercase above each group.
index->set_Heading(u"A");
// Set the table created by the INDEX field to span over 2 columns.
index->set_NumberOfColumns(u"2");
// Set any entries with starting letters outside the "a-c" character range to be omitted.
index->set_LetterRange(u"a-c");
ASSERT_EQ(u" INDEX \\z 1033 \\h A \\c 2 \\p a-c", index->GetFieldCode());
// These next two XE fields will show up under the "A" heading,
// with their respective text stylings also applied to their page numbers.
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());
// Both the next two XE fields will be under a "B" and "C" heading in the INDEX fields table of contents.
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 fields sort all entries alphabetically, so this entry will show up under "A" with the other two.
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");
// This entry will not appear because it starts with the letter "D",
// which is outside the "a-c" character range that the INDEX field's LetterRange property defines.
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");
See Also
- Class Field
- Namespace Aspose::Words::Fields
- Library Aspose.Words for C++