TXFAFormStructure

HPDFXFAFormStructure fornece preparação nativa e mapeamento de identidades para instâncias de formulários baseadas em template

A classe empresta seu TXFADocument, é dona de seu grafo estrutural e candidatos desanexados, e nunca libera o documento emprestado

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;

Escopo de operações

Chame BeginOperation antes do trabalho estrutural e EndOperation num bloco finally

O callback fornecido é chamado durante todo o traversal delimitado, cópia e preflight do grafo, e pode disparar uma exceção para cancelar a operação

Graph.DetachedRoots expõe a coleção dona do grafo para observação e restauração coordenada de snapshots, e os chamadores não devem liberar independentemente nós ainda pertencentes a essa coleção

Preparação e adoção

PrepareMaterialization compõe um candidato de formulário desanexado a partir de uma definição de template e uma instância existente opcional, retornando pares origem-para-candidato em TXFAFormStructureAliases

TXFAFormStructureAlias.Source e Target são referências de nós emprestadas para remapear identidades externas antes de liberar a instância anterior

ReplaceInstance adota o candidato preparado e retorna a instância anterior como um nó desanexado de posse do grafo

Redirecione referências dependentes antes de chamar DiscardPrepared na instância anterior retornada

DiscardPrepared libera um candidato desanexado pertencente ao mesmo grafo e não remove uma instância viva anexada

Instâncias iniciais e esparsas

PrepareUnboundModel retorna um modelo de formulário desanexado para um merge vazio, preservando o conteúdo autorado do template e expandindo ocorrências suportadas de subforms em nós nativos independentes

EnsureInstance retorna um nó de formulário vivo existente ou constrói o path esparso de instância exigido para uma definição de template e seu contexto vivo de dados

EnsureInstance pode mutar vários nós vivos, então o rollback de operações compostas pertence à transação de documento envolvente do chamador

TXFAWidgetRuntime fornece essa transação para eventos públicos de script, incluindo restauração nativa de documento e identidades desanexadas

Funções auxiliares

FunçãoPropósito
HPDFXFAEmptyMergeCountValida uma declaração de ocorrências e retorna sua contagem de merge vazio, usando a inicial explícita ou o mínimo
HPDFXFAIsMaterializedFormNodeCheca o marcador de materialização qualificado por namespace sob um orçamento explícito de traversal
HPDFXFAResolveMaterializedDefinitionResolve o nó efetivo de formulário para uma definição e contexto de dados, reportando se o modelo materializado é autoritativo
HPDFXFAResolveActualFormScopeResolve o escopo vivo de dados de uma instância real repetida de formulário, sem repetir de novo a declaração de template dela

O marcador salvo usa urn:hotpdf:xfa:form-structure:1 com um prefixo seguro contra colisões, enquanto nós nativos de formulários usam o namespace de formulários do XFA

Chamadores nativos independentes devem reter o documento pelo tempo de vida da classe e fornecer rollback em torno de operações compostas de grafo quando cancelamento ou outra falha precisar restaurar etapas anteriores bem-sucedidas