TXFAFormStructure

HPDFXFAFormStructure proporciona preparación nativa y mapeo de identidades para instancias de formulario respaldadas por plantilla

La clase toma prestado su TXFADocument, es dueña de su grafo estructural y candidatos desvinculados, y nunca libera el documento prestado

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;

Alcance de la operación

Llame a BeginOperation antes del trabajo estructural y a EndOperation en un bloque finally

El callback suministrado se invoca a lo largo del traversal acotado, la copia y la verificación previa del grafo, y puede lanzar una excepción para cancelar la operación

Graph.DetachedRoots expone la colección propietaria del grafo para observación y restauración coordinada de snapshots, y los callers no deben liberar independientemente nodos que esa colección aún posea

Preparación y adopción

PrepareMaterialization compone un candidato de formulario desvinculado a partir de una definición de plantilla y una instancia existente opcional, devolviendo pares de origen-a-candidato en TXFAFormStructureAliases

TXFAFormStructureAlias.Source y Target son referencias de nodo prestadas para remapear identidades externas antes de liberar la instancia previa

ReplaceInstance adopta el candidato preparado y devuelve la instancia previa como un nodo desvinculado owned por el grafo

Redireccione las referencias dependientes antes de llamar a DiscardPrepared sobre la instancia previa devuelta

DiscardPrepared libera un candidato desvinculado owned por el mismo grafo y no elimina una instancia viva ya vinculada

Instancias iniciales y dispersas

PrepareUnboundModel devuelve un modelo de formulario desvinculado para una fusión vacía, preservando el contenido autorial de la plantilla y expandiendo las ocurrencias de subform soportadas en nodos nativos independientes

EnsureInstance devuelve un nodo de formulario vivo existente o construye la ruta de instancia dispersa requerida para una definición de plantilla y su contexto de datos vivo

EnsureInstance puede mutar varios nodos vivos, así que el rollback de operaciones compuestas pertenece a la transacción de documento circundante del caller

TXFAWidgetRuntime proporciona esa transacción para los eventos de script públicos, incluida la restauración de identidades nativas del documento y desvinculadas

Funciones auxiliares

FunciónPropósito
HPDFXFAEmptyMergeCountValida una declaración de ocurrencia y devuelve su conteo de fusión vacía, usando el initial explícito o el mínimo
HPDFXFAIsMaterializedFormNodeVerifica el marcador de materialización calificado por namespace bajo un presupuesto de traversal explícito
HPDFXFAResolveMaterializedDefinitionResuelve el nodo de formulario efectivo para una definición y contexto de datos, reportando si el modelo materializado es autoritativo
HPDFXFAResolveActualFormScopeResuelve el ámbito de datos vivo de una instancia de formulario repetida real sin repetir de nuevo su declaración de plantilla

El marcador guardado usa urn:hotpdf:xfa:form-structure:1 con un prefijo seguro contra colisiones, mientras que los nodos de formulario nativos usan el namespace de formulario XFA

Los callers nativos independientes deben retener el documento durante la vida de la clase y proporcionar rollback alrededor de operaciones de grafo compuestas cuando la cancelación u otra falla deba restaurar pasos exitosos anteriores