Modelo de host XFA
Ative TXFAWidgetRuntimeOptions.ScriptOptions.EnableJavaScript para usar o modelo com estado de xfa.host através do motor QuickJS distribuído
Configure metadados de aplicações 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 só de leitura de aplicações fornecidos pela aplicação de incorporação |
numPages | Contagem real só de leitura de páginas de layouts, incluindo conteúdo posicionado além de widgets de campos |
currentPage | Página atual com base zero, verificada contra numPages; dar foco a 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álculos; 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 incorporação; a biblioteca não substitui o número de versão dela
O estado do host pertence ao runtime; alterações de títulos e de páginas não modificam o grafo original de objetos PDF nem são codificadas nos dados XDP guardados
Navegação, foco e reset de dados
| Método | Comportamento |
|---|---|
pageUp(), pageDown() | Movem-se dentro dos bounds de páginas e param na primeira ou última página |
getFocus() | Devolve a ocorrência viva de campos com foco ou null quando o foco está ausente, removido ou oculto |
setFocus(fieldOrSOM) | Pede foco numa ocorrência viva visível de campos; texto null ou vazio limpa o foco |
resetData(paths="") | Restaura valores default de templates para 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 alheias são preservadas |
Campos de reset saem do modo de edição e readquirem um estado válido de interação, impedindo que um buffer obsoleto de edições sobreponha o valor de reset
Reset e loadXML do Data DOM podem correr no mesmo evento; as alterações deles partilham a transação do evento, e um script falhado ou um orçamento esgotado restaura valores de dados, buffers de edição, estado de hosts e estado lexical de objetos de scripts antes de uma repetição
Identidades de campos seguem a ocorrência de dados deles quando um gestor de instâncias reordena subforms repetidos, e a restauração de snapshots preserva essas identidades lógicas
Ciclo de vida de focos e transações
Alterações de focos do runtime confirmam e validam uma edição pendente de fontes, executam scripts exit de fontes, selecionam o campo novo e executam scripts enter de alvos antes de o cálculo e o layout assentarem
Pedidos de focos feitos por scripts enter ou exit podem redirecionar o alvo; cada drenagem de focos permite 64 transições e partilha os orçamentos de operações de scripts e de tempo decorrido
Scripts veem a atividade através de xfa.event.name; cálculos e validação recebem os nomes de contextos correspondentes deles
Chamadas públicas de FocusWidget e de DispatchEvent enter/exit usam o mesmo ciclo de vida transacional; ClearFocus cancela o buffer atual de edições dele antes do ciclo de vida exit, preservando o comportamento anterior dele de cancelamentos
OnFocusChanged publica callbacks ordered após a confirmação; redirecionamentos intermediários permanecem dentro da transação, e scripts, validação ou orçamentos falhados restauram em conjunto estado de hosts, foco, buffers de edição, valores de documentos 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 de aplicações e cobertura restante
Diálogos, impressão, navegação externa, importação/exportação e efeitos HTTP usam o transport explícito de hosts de aplicações e respostas registadas; o modelo de estados em si não lança operação de UI nem de rede nenhuma
APIs adicionais de diálogos de hosts, todas as propriedades de hosts Acrobat, consultas dinâmicas síncronas de reflow e operadores SOM completos continuam a ser alvos separados de integração
APIs relacionadas: TXFAHostModelState, PXFAHostModelState, HPDFXFAHostModelJavaScript e Runtime interativo de widgets XFA