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

PropriedadeComportamento
name, version, appType, platform, variation, languageMetadados read-only da aplicação, fornecidos pela aplicação de embutimento
numPagesContagem real read-only de páginas do layout, incluindo conteúdo posicionado além dos widgets de campos
currentPagePágina atual com base zero, checada contra numPages; focar um campo seleciona a página dele
titleTítulo Unicode do runtime, limitado por MaxValueChars e publicado com a transação
calculationsEnabledControla scripts automáticos de cálculo; o default é true
validationsEnabledControla 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étodoComportamento
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