TXFAFormStructure

HPDFXFAFormStructure fornisce preparazione nativa e mapping di identità per le istanze di modulo basate su template

La classe prende in prestito il suo TXFADocument, è proprietaria del suo grafo strutturale e dei candidati staccati, e non libera mai il documento prestato

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;

Ambito dell'operazione

Chiamare BeginOperation prima del lavoro strutturale e EndOperation in un blocco finally

Il callback fornito viene invocato durante l'attraversamento limitato, la copia e la verifica preventiva del grafo, e può sollevare un'eccezione per cancellare l'operazione

Graph.DetachedRoots espone la collezione proprietaria del grafo per osservazione e ripristino coordinato degli snapshot, e i caller non devono liberare indipendentemente nodi che quella collezione possiede ancora

Preparazione e adozione

PrepareMaterialization compone un candidato di modulo staccato da una definizione di template e un'istanza esistente opzionale, restituendo coppie sorgente-candidato in TXFAFormStructureAliases

TXFAFormStructureAlias.Source e Target sono riferimenti ai nodi presi in prestito per rimappare le identità esterne prima di rilasciare l'istanza precedente

ReplaceInstance adotta il candidato preparato e restituisce l'istanza precedente come nodo staccato owned dal grafo

Rindirizzare i riferimenti dipendenti prima di chiamare DiscardPrepared sull'istanza precedente restituita

DiscardPrepared rilascia un candidato staccato owned dallo stesso grafo e non rimuove un'istanza viva già attaccata

Istanze iniziali e sparse

PrepareUnboundModel restituisce un modello di modulo staccato per un merge vuoto, conservando il contenuto autoriale del template ed espandendo le occorrenze di subform supportate in nodi nativi indipendenti

EnsureInstance restituisce un nodo di modulo vivo esistente o costruisce il percorso di istanza sparsa richiesto per una definizione di template e il suo contesto dati vivo

EnsureInstance può mutare più nodi vivi, quindi il rollback delle operazioni composte appartiene alla transazione di documento circostante del caller

TXFAWidgetRuntime fornisce quella transazione per gli eventi di script pubblici, incluso il ripristino delle identità native del documento e di quelle staccate

Funzioni ausiliarie

FunzioneScopo
HPDFXFAEmptyMergeCountValida una dichiarazione di occorrenza e restituisce il suo conteggio di merge vuoto, usando l'initial esplicito o il minimo
HPDFXFAIsMaterializedFormNodeVerifica il marcatore di materializzazione qualificato dal namespace sotto un budget di attraversamento esplicito
HPDFXFAResolveMaterializedDefinitionRisolve il nodo di modulo effettivo per una definizione e un contesto dati, riportando se il modello materializzato è autorevole
HPDFXFAResolveActualFormScopeRisolve l'ambito dati vivo di un'istanza di modulo ripetuta effettiva senza ripetere di nuovo la sua dichiarazione di template

Il marcatore salvato usa urn:hotpdf:xfa:form-structure:1 con un prefisso sicuro rispetto alle collisioni, mentre i nodi di modulo nativi usano il namespace dei moduli XFA

I caller nativi autonomi devono trattenere il documento per la vita della classe e fornire il rollback attorno alle operazioni di grafo composte quando la cancellazione o un altro fallimento debba ripristinare passi riusciti precedenti