Aspose::Words::Fields::FieldShape class

FieldShape class

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

class FieldShape : public Aspose::Words::Fields::Field

Методы

МетодОписание
get_DisplayResult()Получает текст, представляющий отображаемый результат поля.
get_End() constПолучает узел, представляющий конец поля.
get_FieldEnd() constПолучает узел, представляющий конец поля.
get_FieldStart() constПолучает узел, представляющий начало поля.
get_Format()Получает объект FieldFormat, который предоставляет типизированный доступ к форматированию поля.
get_IsDirty()Получает или задает, является ли текущий результат поля более некорректным (устаревшим) из‑за других изменений, внесённых в документ.
get_IsLocked()Получает или задает, заблокировано ли поле (не должно пересчитывать свой результат).
get_LocaleId()Получает или задает LCID поля.
get_Result()Получает или задает текст, находящийся между разделителем поля и его концом.
get_Separator()Получает узел, представляющий разделитель поля. Может быть null.
get_Start() constПолучает узел, представляющий начало поля.
get_Text()Получает или задает текст для получения.
virtual get_Type() constПолучает тип поля Microsoft Word.
GetFieldCode()Возвращает текст между началом поля и разделителем поля (или концом поля, если разделитель отсутствует). Включены как код поля, так и результат дочерних полей.
GetFieldCode(bool)Возвращает текст между началом поля и разделителем поля (или концом поля, если разделитель отсутствует).
GetType() const override
Is(const System::TypeInfo&) const override
virtual Remove()Удаляет поле из документа. Возвращает узел сразу после поля. Если конец поля является последним дочерним элементом его родительского узла, возвращает родительский абзац. Если поле уже удалено, возвращает null.
set_IsDirty(bool)Сеттер для Aspose::Words::Fields::Field::get_IsDirty.
set_IsLocked(bool)Сеттер для Aspose::Words::Fields::Field::get_IsLocked.
set_LocaleId(int32_t)Сеттер для Aspose::Words::Fields::Field::get_LocaleId.
set_Result(const System::String&)Сеттер для Aspose::Words::Fields::Field::get_Result.
set_Text(const System::String&)Сеттер для Aspose::Words::Fields::FieldShape::get_Text.
static Type()
Unlink()Выполняет отсоединение поля.
Update()Выполняет обновление поля. Вызывает исключение, если поле уже обновляется.
Update(bool)Выполняет обновление поля. Выбрасывает исключение, если поле уже обновляется.

Примеры

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

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

// Поле BIDIOUTLINE нумерует абзацы как поля AUTONUM/LISTNUM,
// но отображается только когда включён язык редактирования справа налево, например иврит или арабский.
// Следующее поле отобразит ".1", RTL-эквивалент номера списка "1.".
auto field = System::ExplicitCast<Aspose::Words::Fields::FieldBidiOutline>(builder->InsertField(Aspose::Words::Fields::FieldType::FieldBidiOutline, true));
builder->Writeln(u"שלום");

ASSERT_EQ(u" BIDIOUTLINE ", field->GetFieldCode());

// Добавьте ещё два поля BIDIOUTLINE, которые отобразят ".2" и ".3".
builder->InsertField(Aspose::Words::Fields::FieldType::FieldBidiOutline, true);
builder->Writeln(u"שלום");
builder->InsertField(Aspose::Words::Fields::FieldType::FieldBidiOutline, true);
builder->Writeln(u"שלום");

// Установите горизонтальное выравнивание текста для каждого абзаца в документе в RTL.
for (auto&& para : System::IterateOver<Aspose::Words::Paragraph>(doc->GetChildNodes(Aspose::Words::NodeType::Paragraph, true)))
{
    para->get_ParagraphFormat()->set_Bidi(true);
}

// Если включить язык редактирования справа налево в Microsoft Word, наши поля будут отображать числа.
// В противном случае они отобразят "###".
doc->Save(get_ArtifactsDir() + u"Field.BIDIOUTLINE.docx");

Показывает, как некоторые старые поля Microsoft Word, такие как SHAPE и EMBED, обрабатываются при загрузке.

// Откройте документ, созданный в Microsoft Word 2003.
auto doc = System::MakeObject<Aspose::Words::Document>(get_MyDir() + u"Legacy fields.doc");

// Если открыть документ Word и нажать Alt+F9, мы увидим поле SHAPE и поле EMBED.
// Поле SHAPE служит якорем/холстом для объекта AutoShape с включённым стилем обтекания «В строке с текстом».
// Поле EMBED имеет ту же функцию, но для встроенного объекта,
// например, таблицы из внешнего документа Excel.
// Однако эти поля не появятся в коллекции Fields документа.
ASSERT_EQ(0, doc->get_Range()->get_Fields()->get_Count());

// Эти поля поддерживаются только старыми версиями Microsoft Word.
// Процесс загрузки документа преобразует эти поля в объекты Shape,
// к которым мы можем получить доступ в коллекции узлов документа.
System::SharedPtr<Aspose::Words::NodeCollection> shapes = doc->GetChildNodes(Aspose::Words::NodeType::Shape, true);
ASSERT_EQ(3, shapes->get_Count());

// Первый узел Shape соответствует полю SHAPE во входном документе,
// который является встроенным холстом для AutoShape.
auto shape = System::ExplicitCast<Aspose::Words::Drawing::Shape>(shapes->idx_get(0));
ASSERT_EQ(Aspose::Words::Drawing::ShapeType::Image, shape->get_ShapeType());

// Второй узел Shape — это сам AutoShape.
shape = System::ExplicitCast<Aspose::Words::Drawing::Shape>(shapes->idx_get(1));
ASSERT_EQ(Aspose::Words::Drawing::ShapeType::Can, shape->get_ShapeType());

// Третий Shape — это то, что было полем EMBED, содержащим внешнюю таблицу.
shape = System::ExplicitCast<Aspose::Words::Drawing::Shape>(shapes->idx_get(2));
ASSERT_EQ(Aspose::Words::Drawing::ShapeType::OleObject, shape->get_ShapeType());

См. также