Valori e riferimenti FormCalc

L'esecuzione FormCalc generale con EnableJavaScript implementa i riferimenti espliciti a oggetti tramite Ref(value), mentre le dichiarazioni di variabili ordinarie e gli argomenti ordinari di funzione copiano i valori degli oggetti

Parametri e risultato di Ref

Un accessor a un oggetto form esistente diventa un handle all'oggetto; passare un handle esistente ne preserva l'identità, un argomento null produce un handle null, e gli altri argomenti scalari restituiscono il loro valore scalare

I riferimenti espongono le proprietà e i metodi ordinari dei nodi come rawValue, parent, name, resolveNode e resolveNodes

Gli argomenti scalari delle built-in dereferenziano gli handle, le funzioni aggregate consumano i valori referenziati, e gli handle null conservano la semantica aritmetica e stringa del null; Exists restituisce 0 per un handle null

var copied = target
target = 8
other = copied

var p = Ref(target)
p = 9
var q = p
q = 10

Il primo blocco preserva il valore precedente di target in copied; il secondo blocco scrive target attraverso due handle che puntano allo stesso oggetto

Assegnazione e distacco

AssegnazioneComportamento
p = Ref(other)Rilega p all'altro oggetto
p = 5 quando p è un riferimentoScrive 5 nell'oggetto referenziato e preserva l'handle
p = Null() quando p è un riferimentoAzzera il valore dell'oggetto referenziato e preserva l'handle
p = Ref(Null())Stacca p e assegna alla variabile un valore null
p = 5 dopo il distaccoImposta a 5 la variabile stessa

Le rideclarazioni di variabili e gli argomenti delle funzioni utente applicano le stesse regole di copia o riferimento; le funzioni possono ricevere, restituire e qualificare riferimenti espliciti

Uguaglianza e identità

Uguaglianza e disuguaglianza confrontano l'identità stabile dell'oggetto quando entrambi gli operandi sono riferimenti; gli operandi oggetto ordinari confrontano i loro valori, e il risultato è numerico 1 o 0

Due campi contenenti lo stesso testo risultano uguali per valore, ma Ref(first) eq Ref(second) restituisce 0 quando sono campi diversi

Istanze ripetute e handle conservati

Uno script object può conservare un handle esplicito tra eventi; l'handle risolve il nodo form corrente per identità stabile, quindi riordinare un subform ripetuto preserva l'occorrenza selezionata

Usare un handle dopo che la sua occorrenza è stata rimossa solleva un errore; le transazioni runtime ripristinano il numero di occorrenze, i valori dei campi e lo stato degli script object quando quell'errore abortisce l'evento

Il runtime fornisce automaticamente identità stabili per template e dati; i chiamanti diretti di eventi che omettono TXFAEventBinding.Identity ricevono un'identità unica basata sull'indice di binding e dovrebbero fornire identità stabili esplicite quando l'ordine di binding cambia

Migrazione

L'esecuzione generale precedente conservava oggetti nodo ordinari nelle dichiarazioni di variabili; sostituisci var p=target con var p=Ref(target) quando p deve restare un handle al nodo

I risultati di uguaglianza FormCalc generali ora usano 1 e 0 invece del testo booleano JavaScript; il codice che concatenava i risultati di uguaglianza deve aspettarsi la rappresentazione numerica

API correlate

Eval dinamico, HPDFXFACompileFormCalcEvent, TXFAEventBinding e Runtime XFA interattivo