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ção | Propósito |
|---|---|
HPDFXFAEmptyMergeCount | Valida uma declaração de ocorrências e retorna sua contagem de merge vazio, usando a inicial explícita ou o mínimo |
HPDFXFAIsMaterializedFormNode | Checa o marcador de materialização qualificado por namespace sob um orçamento explícito de traversal |
HPDFXFAResolveMaterializedDefinition | Resolve o nó efetivo de formulário para uma definição e contexto de dados, reportando se o modelo materializado é autoritativo |
HPDFXFAResolveActualFormScope | Resolve 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