TXFAFormStructure

HPDFXFAFormStructure fournit la préparation native et le mapping d'identité des instances de formulaires adossées à un template

La classe emprunte son TXFADocument, possède son graphe structurel et ses candidates détachées, et ne libère jamais le document emprunté

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;

Portée d'opération

Appelez BeginOperation avant le travail structurel et EndOperation dans un bloc finally

Le callback fourni est appelé tout au long de la traversée, de la copie et du précontrôle de graphe bornés, et peut lever une exception pour annuler l'opération

Graph.DetachedRoots expose la collection propriétaire du graphe pour l'observation et la restauration coordonnée d'instantanés, et les appelants ne doivent pas libérer indépendamment des nœuds encore possédés par cette collection

Préparation et adoption

PrepareMaterialization compose une candidate de formulaire détachée à partir d'une définition de template et d'une instance existante optionnelle, en retournant les paires source-vers-candidate dans TXFAFormStructureAliases

TXFAFormStructureAlias.Source et Target sont des références de nœuds empruntées pour remapper les identités externes avant de libérer l'instance précédente

ReplaceInstance adopte la candidate préparée et retourne l'instance précédente comme nœud détaché possédé par le graphe

Reciblez les références dépendantes avant d'appeler DiscardPrepared sur l'instance précédente retournée

DiscardPrepared libère une candidate détachée possédée par le même graphe et ne retire pas une instance vivante attachée

Instances initiales et éparses

PrepareUnboundModel retourne un modèle de formulaire détaché pour une fusion vide, en préservant le contenu de template rédigé et en développant les occurrences de subform prises en charge en nœuds natifs indépendants

EnsureInstance retourne un nœud de formulaire vivant existant ou construit le chemin d'instance épars requis pour une définition de template et son contexte de données vivant

EnsureInstance peut muter plusieurs nœuds vivants, le rollback des opérations composées relève donc de la transaction de document englobante de l'appelant

TXFAWidgetRuntime fournit cette transaction pour les événements de script publics, restauration native du document et des identités détachées comprise

Fonctions utilitaires

FonctionBut
HPDFXFAEmptyMergeCountValide une déclaration d'occurrence et retourne son nombre de fusions vides, avec initial explicite ou minimum
HPDFXFAIsMaterializedFormNodeVérifie le marqueur de matérialisation qualifié par espace de noms sous un budget de traversée explicite
HPDFXFAResolveMaterializedDefinitionRésout le nœud de formulaire effectif pour une définition et un contexte de données, en indiquant si le modèle matérialisé fait autorité
HPDFXFAResolveActualFormScopeRésout la portée de données vivante d'une instance de formulaire répétée réelle sans répéter à nouveau sa déclaration de template

Le marqueur enregistré utilise urn:hotpdf:xfa:form-structure:1 avec un préfixe à l'abri des collisions, tandis que les nœuds de formulaires natifs utilisent l'espace de noms de formulaire XFA

Les appelants natifs autonomes doivent conserver le document pendant la durée de vie de la classe et prévoir un rollback autour des opérations de graphe composées quand une annulation ou un autre échec doit restaurer des étapes antérieures réussies