TXFAFormStructure
HPDFXFAFormStructure предоставляет нативную подготовку и отображение идентичностей для экземпляров форм на основе шаблонов
Класс заимствует свой TXFADocument, владеет своим структурным графом и отсоединёнными кандидатами и никогда не освобождает заимствованный документ
constructor Create(Document: TXFADocument;
const Limits: TXFADataStructureLimits;
const OnTick: TXFADataStructureTick);
procedure BeginOperation(const OnTick: TXFADataStructureTick);
procedure EndOperation;
function PrepareUnboundModel: TXFANode;
function EnsureInstance(Definition, DataNode: TXFANode): TXFANode;
function PrepareMaterialization(Definition, Instance: TXFANode;
out Aliases: TXFAFormStructureAliases): TXFANode;
function ReplaceInstance(Instance, Prepared: TXFANode): TXFANode;
procedure DiscardPrepared(Node: TXFANode);
property Graph: TXFADataStructure;
Область операции
Вызывайте BeginOperation перед структурной работой и EndOperation в блоке finally
Предоставленный колбэк вызывается на протяжении ограниченного обхода, копирования и предварительной проверки графа и может возбудить исключение для отмены операции
Graph.DetachedRoots открывает владеющую коллекцию графа для наблюдения и координированного восстановления снимков, и вызывающие не должны независимо освобождать узлы, всё ещё принадлежащие этой коллекции
Подготовка и принятие
PrepareMaterialization составляет отсоединённого кандидата формы из определения шаблона и необязательного существующего экземпляра, возвращая пары источник-кандидат в TXFAFormStructureAliases
TXFAFormStructureAlias.Source и Target — заимствованные ссылки на узлы для перемаппинга внешних идентичностей перед высвобождением предыдущего экземпляра
ReplaceInstance принимает подготовленного кандидата и возвращает предыдущий экземпляр как отсоединённый узел, принадлежащий графу
Перенацельте зависимые ссылки перед вызовом DiscardPrepared над возвращённым предыдущим экземпляром
DiscardPrepared высвобождает отсоединённого кандидата, принадлежащего тому же графу, и не удаляет присоединённый живой экземпляр
Начальные и разреженные экземпляры
PrepareUnboundModel возвращает отсоединённую модель формы для пустого слияния, сохраняя авторское содержимое шаблона и разворачивая поддерживаемые вхождения subform в независимые нативные узлы
EnsureInstance возвращает существующий живой узел формы или строит требуемый разреженный путь экземпляра для определения шаблона и его живого контекста данных
EnsureInstance может изменить несколько живых узлов, поэтому откат составных операций принадлежит окружающей транзакции документа вызывающего
TXFAWidgetRuntime предоставляет эту транзакцию для публичных скриптовых событий, включая восстановление нативных идентичностей документа и отсоединённых
Вспомогательные функции
| Функция | Назначение |
|---|---|
HPDFXFAEmptyMergeCount | Проверяет объявление вхождения и возвращает его счётчик пустого слияния, используя явный initial или минимум |
HPDFXFAIsMaterializedFormNode | Проверяет квалифицированный namespace-ом маркер материализации в рамках явного бюджета обхода |
HPDFXFAResolveMaterializedDefinition | Разрешает эффективный узел формы для определения и контекста данных, сообщая, является ли материализованная модель авторитетной |
HPDFXFAResolveActualFormScope | Разрешает живую область данных фактического повторяющегося экземпляра формы, не повторяя снова его объявление шаблона |
Сохранённый маркер использует urn:hotpdf:xfa:form-structure:1 с безопасным к коллизиям префиксом, тогда как нативные узлы форм используют namespace форм XFA
Автономные нативные вызывающие должны удерживать документ на время жизни класса и обеспечивать откат вокруг составных операций графа, когда отмена или другой сбой должны восстановить более ранние успешные шаги