Valores e referências do FormCalc

A execução geral do FormCalc com EnableJavaScript implementa referências explícitas de objetos através de Ref(value), enquanto declarações comuns de variáveis e arguments comuns de funções copiam valores de objetos

Parameters e resultado de Ref

Um accessor a um objeto de formulário existente vira um handle de objeto; passar um handle existente preserva sua identidade, um argument null produz um handle null, e outros arguments escalares retornam seu valor escalar

Referências fornecem propriedades e métodos comuns de nós como rawValue, parent, name, resolveNode e resolveNodes

Arguments escalares built-in desreferenciam handles, funções agregadas consomem valores referenciados, e handles null retêm a semântica de aritmética e strings de null; Exists retorna 0 para um handle null

var copied = target
target = 8
other = copied

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

O primeiro bloco preserva o valor anterior de target em copied; o segundo bloco escreve target através de dois handles referindo-se ao mesmo objeto

Atribuição e desanexação

AtribuiçãoComportamento
p = Ref(other)Revincula p ao outro objeto
p = 5 quando p é uma referênciaEscreve 5 no objeto referenciado e preserva o handle
p = Null() quando p é uma referênciaLimpa o valor do objeto referenciado e preserva o handle
p = Ref(Null())Desanexa p e dá à variável um valor null
p = 5 após a desanexaçãoDefine a própria variável como 5

Redeclarações de variáveis e arguments de funções de usuário aplicam as mesmas regras de cópia ou referência; funções podem receber, retornar e qualificar referências explícitas

Igualdade e identidade

Igualdade e desigualdade comparam identidade estável de objetos quando ambos os operands são referências; operands comuns de objetos comparam seus valores, e o resultado é 1 ou 0 numérico

Dois campos contendo o mesmo texto são iguais por valor, mas Ref(first) eq Ref(second) retorna 0 quando são campos diferentes

Instâncias repetidas e handles retidos

Um objeto de script pode reter um handle explícito entre eventos; o handle resolve o nó atual do formulário por identidade estável, então reordenar um subform repetido preserva a ocorrência selecionada

Usar um handle depois que sua ocorrência foi removida dispara um erro; transações de runtime restauram a contagem de ocorrências, valores de campos e estado de objetos de script quando esse erro aborta o evento

O runtime fornece identidades estáveis de template e dados automaticamente; chamadores diretos de eventos que omitem TXFAEventBinding.Identity recebem uma identidade única de índice de binding e devem fornecer identidades estáveis explícitas quando a ordem de bindings muda

Migração

Execuções gerais anteriores retinham objetos de nós comuns em declarações de variáveis; substitua var p=target por var p=Ref(target) quando p precisa permanecer um handle de nó

Os resultados de igualdade do FormCalc geral agora usam 1 e 0 em vez de texto booleano JavaScript; código que concatenava resultados de igualdade deve esperar a representação numérica

APIs relacionadas

Eval dinâmico, HPDFXFACompileFormCalcEvent, TXFAEventBinding e Runtime XFA interativo