Criação e edição de árvores de formulários XFA

TXFAWidgetRuntime suporta criação, clonagem e edição transacionais JavaScript da árvore viva de formulários através de xfa.form e coleções de nós

A árvore viva de formulários tem identidades nativas independentes e pode ser guardada como um pacote de formulários XDP sem alterar o template escrito

Criar e inserir um campo

var row = xfa.resolveNode("row[1]");
var field = xfa.form.createNode("field", "additional");
row.nodes.append(field);
field.w = "160pt";
field.h = "24pt";
field.ui.getElement("textEdit");
field.font.typeface = "DejaVu Sans";
field.rawValue = "Additional value";

createNode(className, name, namespaceURI) devolve um nó destacado, com nome vazio e o namespace do modelo usados quando os argumentos opcionais são omitidos

As classes aceites incluem field, subform, draw, area, exclGroup e as classes de propriedades reconhecidas pelo schema de propriedades do runtime

Criar um nó não o insere no formulário nem cria um widget visível até ser anexado com as propriedades exigidas de UI e de valores

Operações de coleções e clonagem

OperaçãoComportamento
parent.nodes.append(node)Move um nó destacado ou anexado para o fim da coleção viva de filhos do pai
parent.nodes.insert(node, before)Move o nó imediatamente antes de um filho existente do mesmo pai
parent.nodes.remove(node)Destaca um filho mantendo a identidade de scripts dele para reutilização posterior
node.clone(true)Devolve um clone profundo destacado com identidades nativas e de scripts separadas
node.clone(false)Devolve um clone raso destacado sem nós filhos nem valor copiado de campos

A ordem de coleções, parent, a consulta de propriedades e a resolução SOM suportada refletem imediatamente edições bem-sucedidas dentro do evento

Referências retidas por objetos de scripts continuam a endereçar os nós próprios delas após uma edição confirmada ou um rollback de eventos, incluindo clones profundos e rasos destacados

Um ciclo, um filho de referência de um pai diferente ou um nó de modelos de dados passado a uma operação de formulários levanta uma exceção antes de essa operação inválida alterar a árvore

A raiz do modelo de formulários pode conter subforms e campos recém-criados, mas a própria raiz do modelo não pode ser movida nem clonada

Âmbitos repetidos e instâncias iniciais

Instâncias reais de formulários mantêm identidades separadas mesmo quando os nomes escritos delas são iguais, os contextos de dados delas diferem ou não existe pacote de datasets nenhum

Uma fusão vazia usa a contagem explícita de occur.initial, ou occur.min quando initial está ausente, e um max ausente tem por defeito min

Para uma fusão vazia, uma contagem inicial fora do mínimo e do máximo é permitida, incluindo zero cópias iniciais

Subforms aninhados e sem nome mantêm os caminhos próprios deles de ocorrências, e materializar estas instâncias não sintetiza um pacote de datasets

Estas regras de ocorrências seguem a XML Forms Architecture 3.3, páginas impressas 339–345

Commit, rollback e saída

Um evento bem-sucedido aplica o journal estrutural dele, reconstrói widgets nativos e torna o formulário editado disponível para SaveToBytes e criação nativa automática de PDFs

Uma exceção de scripts não apanhada, falha nativa de commits ou orçamento de eventos excedido restaura o documento original, identidades de widgets e estado retido de scripts, para que um evento posterior possa repetir

Os orçamentos existentes de operações, nós, profundidade, bytes, widgets e tempo decorrido também se aplicam à preparação estrutural e ao commit

Instâncias guardadas de formulários podem ser recarregadas e passadas a HPDFXFAWriteHeadlessPDF para criar campos reais de PDFs e streams de aparências com bytes fornecidos de tipos de letra

Âmbito

Estas APIs editam o modelo vivo de formulários e o schema suportado dele de propriedades

Edição geral de xfa.template, processamento completo de subform-sets de escolhas, o schema completo de classes XFA e combinações arbitrárias de seletores de bindings continuam a ser capacidades separadas