Saltar al contenido principal
Versión: 20 R9

FORM LOAD

FORM LOAD ( {aTable ;} form {; formData}{; *} )

ParámetrosTipoDescripción
aTableTablaFormulario tabla a cargar (si se omite, carga un formulario proyecto)
formText, ObjectNombre (cadena) del formulario (proyecto o tabla), o una ruta POSIX (cadena) a un archivo .json que describa el formulario, o un objeto que describa el formulario a abrir
formDataObjectDatos a asociar al formulario
*OperadorSi se pasa = el comando se aplica a la base de datos del host cuando se ejecuta desde un componente (parámetro ignorado fuera de este contexto)

Descripción

El comando FORM LOAD se utiliza para cargar el form en memoria en el proceso actual junto con formData (opcional) para imprimir sus datos o analizar su contenido. Sólo puede haber un formulario actual por proceso.

En el parámetro form, puede pasar:

  • el nombre de un formulario, o
  • la ruta (en sintaxis POSIX) a un archivo .json válido que contenga una descripción del formulario a utilizar, o
  • un objeto que contiene la descripción del formulario.

Cuando el comando se ejecuta desde un componente, carga los formularios del componente por defecto. Si pasa el parámetro *, el método carga los formularios de la base de datos local.

formData

Opcionalmente, puede pasar parámetros al form usando el objeto formData o el objeto de clase form automáticamente instanciado por 4D si has asociado una clase de usuario al formulario. Todas las propiedades del objeto de datos del formulario estarán entonces disponibles desde el contexto del formulario a través del comando Form. El objeto de datos del formulario está disponible en el evento de formulario On Load.

Para obtener información detallada sobre el objeto de datos del formulario, consulte el comando DIALOG.

Impresión de datos

Para poder ejecutar este comando, debe abrirse previamente un trabajo de impresión utilizando el comando OPEN PRINTING JOB. El comando OPEN PRINTING JOB hace una llamada implícita al comando FORM UNLOAD, por lo que en este contexto es necesario ejecutar FORM LOAD. Una vez cargado, este form se convierte en el formulario de impresión actual. Todos los comandos de gestión de objetos, y en particular el comando Print object, funcionan con este formulario.

Si ya se ha cargado previamente un formulario de impresión (mediante una llamada previa al comando FORM LOAD), éste se cierra y se sustituye por form. Puede abrir y cerrar varios formularios proyecto en la misma sesión de impresión. El cambio del formulario de impresión mediante el comando FORM LOAD no genera saltos de página. Corresponde al desarrollador gestionar los saltos de página.

Solo se ejecuta el evento formulario On Load durante la apertura del formulario proyecto, así como todos los métodos objeto del formulario. Otros eventos de formulario son ignorados. El evento formulario On Unload se ejecuta al final de la impresión.

Para preservar la coherencia gráfica de los formularios, se recomienda aplicar la propiedad de apariencia "Impresión" independientemente de la plataforma.

El formulario de impresión actual se cierra automáticamente cuando el comando CLOSE PRINTING JOB es llamado.

Análisis del contenido del formulario

Esto consiste en cargar un formulario fuera de pantalla con fines de análisis. Para ello, basta con llamar a FORM LOAD fuera del contexto de un trabajo de impresión. En este caso, los eventos de formulario no se ejecutan.

FORM LOAD puede utilizarse con los comandos FORM GET OBJECTS y OBJECT Get type para realizar cualquier tipo de procesamiento sobre el contenido del formulario. A continuación, debe llamar al comando FORM UNLOAD para liberar el formulario de la memoria.

Tenga en cuenta que en todos los casos, el formulario en pantalla permanece cargado (no le afecta el comando FORM LOAD) por lo que no es necesario volver a cargarlo después de llamar a FORM UNLOAD.

Recordatorio: en el contexto fuera de pantalla, no olvide llamar a FORM UNLOAD para evitar cualquier riesgo de saturación de memoria.

Ejemplo 1

Llamada a un formulario proyecto en un trabajo de impresión:

OPEN PRINTING JOB
FORM LOAD("print_form")
// ejecución de eventos y de métodos objeto

Ejemplo 2

Llamada a un formulario tabla en un trabajo de impresión:

OPEN PRINTING JOB
FORM LOAD([People];"print_form")
// ejecución de eventos y de métodos objeto

Ejemplo 3

Análisis del contenido de los formularios para efectuar el tratamiento de las áreas de introducción de texto:

 FORM LOAD([People];"my_form")
  // selección de formulario sin ejecución de eventos o métodos
 FORM GET OBJECTS(arrObjNames;arrObjPtrs;arrPages;*)
 For($i;1;Size of array(arrObjNames))
    If(OBJECT Get type(*;arrObjNames{$i})=Object type text input)
  //… procesamiento
    End if
 End for
 FORM UNLOAD //no olvide descargar el formulario

Ejemplo 4

El siguiente ejemplo devuelve el número de objetos de un formulario JSON:

 ARRAY TEXT(objectsArray;0) //ordenar los elementos del formulario en arrays
 ARRAY POINTER(variablesArray;0)
 ARRAY INTEGER(pagesArray;0)
 
 FORM LOAD("/RESOURCES/OutputForm.json") //cargar el formulario
 FORM GET OBJECTS(objectsArray;variablesArray;pagesArray;Form all pages+Form inherited)
 
 ALERT("The form contains "+String(size of array(objectsArray))+" objects") //devuelve el recuento de objetos

el resultado mostrado es:

Ejemplo 5

Desea imprimir un formulario que contiene un list box. Durante el evento on load, desea que se modifique el contenido del list box.

1. En el método de impresión, usted escribe:

 var $formData : Object
 var $over : Boolean
 var $full : Boolean
 
 OPEN PRINTING JOB
 $formData:=New object
 $formData.LBcollection:=New collection()
 ... //llenar la colección con datos
 
 FORM LOAD("GlobalForm";$formData) //almacenar la colección en $formData
 $over:=False
 Repeat
    $full:=Print object(*;"LB") // la fuente de datos de este listbox "LB" es Form.LBcollection
    LISTBOX GET PRINT INFORMATION(*;"LB";lk printing is over;$over)
    If(Not($over))
       PAGE BREAK
    End if
 Until($over)
 FORM UNLOAD
 CLOSE PRINTING JOB

2. En el método formulario, puede escribir:

 var $o : Object
 Case of
    :(Form event code=On Load)
       For each($o;Form.LBcollection) //LBcollection está disponible
          $o.reference:=Uppercase($o.reference)
       End for each
 End case

Ver también

Current form name
FORM UNLOAD
LISTBOX GET OBJECTS
OBJECT Get type
Print object

Propiedades

Número de comando1103
Hilo seguro