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

PropriedadeComportamento
name, version, appType, platform, variation, languageMetadados só de leitura de aplicações fornecidos pela aplicação de incorporação
numPagesContagem real só de leitura de páginas de layouts, incluindo conteúdo posicionado além de widgets de campos
currentPagePágina atual com base zero, verificada contra numPages; dar foco a 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álculos; 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 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étodoComportamento
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