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ção | Comportamento |
|---|---|
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