Modelo host XFA
Activa TXFAWidgetRuntimeOptions.ScriptOptions.EnableJavaScript para usar el modelo con estado de xfa.host mediante el engine QuickJS incluido
Configura los metadatos de la aplicación mediante TXFAWidgetRuntimeOptions.HostModel antes de crear el runtime, y lee el estado actual a través de TXFAWidgetRuntime.HostModel
Propiedades
| Propiedad | Comportamiento |
|---|---|
name, version, appType, platform, variation, language | Metadatos de aplicación de solo lectura suministrados por la aplicación que hospeda |
numPages | Recuento real de páginas del layout, de solo lectura, incluido el contenido posicionado más allá de los widgets de campo |
currentPage | Página actual base cero, comprobada contra numPages; dar foco a un campo selecciona su página |
title | Título Unicode del runtime, limitado por MaxValueChars y publicado con la transacción |
calculationsEnabled | Controla los scripts de cálculo automáticos; el valor por defecto es true |
validationsEnabled | Controla los scripts de validación para los valores editados; el valor por defecto es true |
La versión de la aplicación identifica a la aplicación que hospeda; la librería no sustituye su número de release
El estado del host pertenece al runtime; los cambios de título y página no modifican el grafo de objetos PDF original ni se codifican en los datos XDP guardados
Navegación, foco y reset de datos
| Método | Comportamiento |
|---|---|
pageUp(), pageDown() | Se mueven dentro de los límites de páginas y se detienen en la primera o última página |
getFocus() | Devuelve la ocurrencia de campo en foco en vivo, o null cuando el foco está ausente, eliminado o concealed |
setFocus(fieldOrSOM) | Solicita el foco sobre una ocurrencia de campo en vivo visible; null o texto vacío limpia el foco |
resetData(paths="") | Restaura los valores por defecto de la plantilla para los campos seleccionados por una lista SOM separada por comas, o todos los campos cuando paths está vacío; los recuentos de instancias repetidas y las ocurrencias no relacionadas se preservan |
Los campos tras el reset salen del modo de edición y recuperan un estado de interacción válido, evitando que un buffer de edición obsoleto sobrescriba el valor restaurado
El reset y el loadXML del Data DOM pueden ejecutarse en el mismo evento; sus cambios comparten la transacción del evento, y un script fallido o un presupuesto agotado restaura los valores de datos, los buffers de edición, el estado del host y el estado léxico de los script objects antes de un reintento
Las identidades de campos siguen su ocurrencia de datos cuando un instance manager reordena subforms repetidos, y la restauración de snapshots preserva esas identidades lógicas
Ciclo de vida del foco y transacciones
Los cambios de foco del runtime confirman y validan una edición de fuente pendiente, ejecutan los scripts de exit de la fuente, seleccionan el campo nuevo y ejecutan los scripts de enter del destino antes de que el cálculo y el layout se asienten
Las peticiones de foco hechas por scripts de enter o exit pueden redirigir el destino; cada drenaje de foco admite 64 transiciones y comparte los presupuestos de operación y de tiempo transcurrido del script
Los scripts ven la actividad a través de xfa.event.name; los cálculos y la validación reciben sus nombres de contexto correspondientes
Las llamadas públicas FocusWidget y DispatchEvent de enter/exit usan el mismo ciclo de vida transaccional; ClearFocus cancela su buffer de edición actual antes del ciclo de vida de exit, preservando su comportamiento de cancelación previo
OnFocusChanged publica callbacks ordenados tras la confirmación; las redirecciones intermedias permanecen dentro de la transacción, y los scripts, la validación o los presupuestos fallidos restauran juntos el estado del host, el foco, los buffers de edición, los valores del documento y el estado léxico 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;
Efectos de aplicación y cobertura restante
Los diálogos, la impresión, la navegación externa, import/export y los efectos HTTP usan el transporte host explícito de la aplicación y respuestas grabadas; el modelo de estado en sí no lanza ninguna operación de UI o red
Las APIs adicionales de diálogos del host, todas las propiedades del host de Acrobat, las consultas de reflow síncrono dinámico y los operadores SOM completos siguen siendo objetivos de integración separados
APIs relacionadas: TXFAHostModelState, PXFAHostModelState, HPDFXFAHostModelJavaScript y Interactive XFA Widget Runtime