Modelo do XFA Host
Habilite TXFAWidgetRuntimeOptions.ScriptOptions.EnableJavaScript para usar o modelo com estado do xfa.host pelo engine QuickJS embarcado
Configure os metadados da aplicação através de TXFAWidgetRuntimeOptions.HostModel antes de criar o runtime, e leia o estado atual através de TXFAWidgetRuntime.HostModel
Propriedades
| Propriedade | Comportamento |
|---|---|
name, version, appType, platform, variation, language | Metadados read-only da aplicação, fornecidos pela aplicação de embutimento |
numPages | Contagem real read-only de páginas do layout, incluindo conteúdo posicionado além dos widgets de campos |
currentPage | Página atual com base zero, checada contra numPages; focar um campo seleciona a página dele |
title | Título Unicode do runtime, limitado por MaxValueChars e publicado com a transação |
calculationsEnabled | Controla scripts automáticos de cálculo; o default é true |
validationsEnabled | Controla scripts de validação para valores editados; o default é true |
A versão da aplicação identifica a aplicação de embutimento; a biblioteca não substitui o número de release dela
O estado do host pertence ao runtime; mudanças de título e páginas não modificam o grafo original de objetos do PDF e não são codificadas nos dados XDP salvos
Navegação, focus e reset de dados
| Método | Comportamento |
|---|---|
pageUp(), pageDown() | Move dentro dos bounds de páginas e para na primeira ou última página |
getFocus() | Retorna a ocorrência viva do campo em foco ou null quando o focus está ausente, removido ou oculto |
setFocus(fieldOrSOM) | Solicita focus numa ocorrência viva visível de campo; null ou texto vazio limpa o focus |
resetData(paths="") | Restaura os valores default do template para os campos selecionados por uma lista SOM separada por vírgulas, ou todos os campos quando paths está vazio; contagens de instâncias repetidas e ocorrências não relacionadas são preservadas |
Campos de reset saem do modo de edição e readquirem um estado válido de interação, prevenindo que um buffer de edição velho sobrescreva o valor de reset
Reset e Data DOM loadXML podem rodar no mesmo evento; as mudanças deles compartilham a transação do evento, e um script com falha ou orçamento esgotado restaura valores de dados, buffers de edição, estado do host e estado lexical de objetos de script antes de um retry
Identidades de campos seguem a ocorrência de dados deles quando um instance manager reordena subforms repetidos, e a restauração de snapshots preserva essas identidades lógicas
Lifecycle de focus e transações
Mudanças de focus do runtime commitam e validam uma edição pendente da origem, executam scripts de exit da origem, selecionam o campo novo e executam scripts de enter do alvo antes de o cálculo e o layout assentarem
Requisições de focus feitas por scripts de enter ou exit podem redirecionar o alvo; cada drenagem de focus permite 64 transições e compartilha os orçamentos de operações de scripts e tempo decorrido
Scripts veem a atividade através de xfa.event.name; cálculos e validação recebem os nomes de contexto correspondentes deles
Chamadas públicas de FocusWidget e enter/exit DispatchEvent usam o mesmo lifecycle transacional; ClearFocus cancela seu buffer atual de edição antes do lifecycle de exit, preservando seu comportamento anterior de cancelamento
OnFocusChanged publica callbacks ordered após o commitment; redirecionamentos intermediários ficam dentro da transação, e scripts, validação ou orçamentos com falha restauram juntos o estado do host, focus, buffers de edição, valores do documento e estado lexical de scripts
Options := TXFAWidgetRuntimeOptions.Default;
Options.ScriptOptions.EnableJavaScript := True;
Options.HostModel.Name := 'Application';
Options.HostModel.Version := '1.0';
Options.HostModel.Language := 'en-US';
Runtime := TXFAWidgetRuntime.Create(XDPBytes, 595, 842, Options);
xfa.host.title = "Order form";
xfa.host.setFocus("rows[1].quantity");
xfa.host.resetData("rows[1].quantity,rows[1].price");
xfa.host.calculationsEnabled = false;
Efeitos da aplicação e cobertura restante
Diálogos, impressão, navegação externa, import/export e efeitos HTTP usam o transporte explícito do host da aplicação e respostas registradas; o modelo de estado em si não chama nenhuma operação de UI ou rede
APIs adicionais de diálogos do host, toda propriedade do host Acrobat, consultas dinâmicas síncronas de reflow e operadores SOM completos permanecem alvos de integração separados
APIs relacionadas: TXFAHostModelState, PXFAHostModelState, HPDFXFAHostModelJavaScript e Runtime interativo de widgets XFA