TXFAFormStructure

HPDFXFAFormStructure fornece preparação nativa e mapeamento de identidades para instâncias de formulários apoiadas por templates

A classe toma o TXFADocument dela emprestado, é dona do grafo estrutural dela e dos candidatos destacados dela, e nunca liberta 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;

Âmbito de operações

Chame BeginOperation antes do trabalho estrutural e EndOperation num bloco finally

O callback fornecido é chamado ao longo da travessia delimitada, da cópia e do preflight do grafo, e pode levantar uma exceção para cancelar a operação

Graph.DetachedRoots expõe a coleção proprietária do grafo para observação e restauração coordenada de snapshots, e quem chama não deve libertar de forma independente nós ainda pertencentes a essa coleção

Preparação e adoção

PrepareMaterialization compõe um candidato destacado de formulários a partir de uma definição de template e uma instância existente opcional, devolvendo pares de fonte-para-candidato em TXFAFormStructureAliases

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

ReplaceInstance adota o candidato preparado e devolve a instância anterior como um nó destacado próprio do grafo

Redirecione referências dependentes antes de chamar DiscardPrepared sobre a instância anterior devolvida

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

Instâncias iniciais e esparsas

PrepareUnboundModel devolve um modelo destacado de formulários para uma fusão vazia, preservando o conteúdo escrito do template e expandindo ocorrências suportadas de subforms em nós nativos independentes

EnsureInstance devolve um nó vivo existente de formulários ou constrói o caminho exigido de instâncias esparsas para uma definição de template e o contexto vivo de dados dela

EnsureInstance pode mutar vários nós vivos, pelo que o rollback de operações compostas pertence à transação de documentos envolvente de quem chama

TXFAWidgetRuntime fornece essa transação para eventos públicos de scripts, incluindo restauração nativa de documentos e de identidades destacadas

Funções auxiliares

FunçãoPropósito
HPDFXFAEmptyMergeCountValida uma declaração de ocorrências e devolve a contagem de fusões vazias dela, usando o inicial explícito ou o mínimo
HPDFXFAIsMaterializedFormNodeVerifica o marcador de materialização namespace-qualificado sob um orçamento explícito de travessias
HPDFXFAResolveMaterializedDefinitionResolve o nó efetivo de formulários para uma definição e um contexto de dados, reportando se o modelo materializado é autoritativo
HPDFXFAResolveActualFormScopeResolve o âmbito vivo de dados de uma instância real repetida de formulários sem repetir outra vez a declaração de template dela

O marcador guardado 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 XFA

Quem chama nativamente autónomo tem de reter o documento durante o tempo de vida da classe e fornecer rollback em torno de operações compostas de grafos quando cancelamento ou outra falha tiver de restaurar passos anteriores bem-sucedidos