TXFAFormStructure
HPDFXFAFormStructure proporciona preparación nativa y mapeo de identidades para instancias de formularios respaldadas por templates
La clase toma prestado su TXFADocument, es dueña de su grafo estructural y de sus candidatas separadas, 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;
Ámbito de operación
Llame a BeginOperation antes del trabajo estructural y a EndOperation en un bloque finally
El callback suministrado se llama a lo largo del recorrido acotado, la copia y el preflight 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 llamadores no deben liberar de forma independiente nodos aún en propiedad de esa colección
Preparación y adopción
PrepareMaterialization compone una candidata de formulario separada a partir de una definición de template y una instancia existente opcional, devolviendo pares origen-a-candidata en TXFAFormStructureAliases
TXFAFormStructureAlias.Source y Target son referencias de nodos prestadas para remapear identidades externas antes de liberar la instancia previa
ReplaceInstance adopta la candidata preparada y devuelve la instancia previa como un nodo separado propiedad del grafo
Redirija las referencias dependientes antes de llamar a DiscardPrepared sobre la instancia previa devuelta
DiscardPrepared libera una candidata separada propiedad del mismo grafo y no elimina una instancia viva adjunta
Instancias iniciales y dispersas
PrepareUnboundModel devuelve un modelo de formulario separado para un merge vacío, preservando el contenido del template del autor y expandiendo las apariciones de subforms 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 template y su contexto de datos vivo
EnsureInstance puede mutar varios nodos vivos, de modo que el rollback de operaciones compuestas pertenece a la transacción de documento circundante del llamador
TXFAWidgetRuntime proporciona esa transacción para los eventos de scripts públicos, incluida la restauración nativa de documento e identidades separadas
Funciones auxiliares
| Función | Propósito |
|---|---|
HPDFXFAEmptyMergeCount | Valida una declaración de aparición y devuelve su recuento de empty-merge, usando el inicial explícito o el mínimo |
HPDFXFAIsMaterializedFormNode | Comprueba el marcador de materialización cualificado por namespace bajo un presupuesto de recorrido explícito |
HPDFXFAResolveMaterializedDefinition | Resuelve el nodo de formulario efectivo para una definición y contexto de datos, informando de si el modelo materializado es autoritativo |
HPDFXFAResolveActualFormScope | Resuelve el ámbito de datos vivo de una instancia de formulario repetida real sin repetir de nuevo su declaración de template |
El marcador guardado usa urn:hotpdf:xfa:form-structure:1 con un prefijo seguro ante colisiones, mientras que los nodos nativos de formularios usan el namespace de formularios XFA
Los llamadores nativos independientes deben retener el documento durante la vida de la clase y proporcionar rollback alrededor de las operaciones compuestas del grafo cuando la cancelación u otro fallo deba restaurar pasos exitosos previos