Conozca los comandos Print form y FORM LOAD actualizados

4D v16 R5 trae una importante mejora al comando DIALOG. Esta mejora consiste en la posibilidad de pasar un nuevo parámetro «formData» de tipo objeto. Ha sido estupendo saber que esta nueva adición ha sido bien recibida por los desarrolladores de 4D.

Con 4D v20, se actualizan otros dos comandos, Print form y FORM LOAD. El beneficio será igual de grande. El contenido del objeto pasado en el parámetro será directamente explotable en los formularios impresos o cargados en memoria.

código de ejemplo

Imprimir formulario

El comando Print form es ampliamente utilizado por los desarrolladores 4D gracias a sus recientes mejoras.

El comando PRINT FORM ahora puede pasar un parámetro opcional de tipo objeto accesible a través de la función Form en el formulario invocado. Ya sea directamente utilizando la función Form como expresiones para los objetos del formulario (Form.firstname / Form.lastname / etc.) pero también cuando se ejecuta el evento on printing detail.

$formData:=New object()
$formData.lastname:="Smith"
$formData.firstname:="john"
$formData.request:="I need more COFFEE"
$h:=Print form("Print_obj"; $formData; Form detail)

Donde el formulario «Print_obj» se ve así:

 

FORM LOAD

Siguiendo el mismo principio, el comando FORM LOAD ahora puede recibir un objeto como parámetro. Si se pasa (opcional), entonces el contenido de este objeto puede ser explotado de diferentes maneras y modificado durante la ejecución del evento on load (sólo gestionado por el evento y sólo dentro de una secuencia OPEN PRINTING JOB / CLOSE PRINTING JOB).

OPEN PRINTING JOB

$formData.LBcollection:=New collection()
$formData.LBcollection.push(New object("reference"; "alpha"; "quantity"; 3; "total"; 120.99))
$formData.LBcollection.push(New object("reference"; "bravo"; "quantity"; 2; "total"; 599.99))

FORM LOAD("GlobalForm"; $formData)  // $formData NEW !!!

$over:=False
Repeat 
	$full:=Print object(*; "LB")  // the datasource of this "LB" listbox is Form.LBcollection	
	LISTBOX GET PRINT INFORMATION(*; "LB"; lk printing is over; $over)
	If (Not($over))
		PAGE BREAK
	End if 
Until ($over)
CLOSE PRINTING JOB

…donde el «GlobalForm» contiene un listbox «LB» usando Form.LBcollection como fuente de datos.

blank

Conclusión

Esta nueva posibilidad de programación le ahorrará tiempo y aligerará su código.

Como siempre, no dude en compartir sus comentarios en los foros 4D. ¡Esperamos sus comentarios!

 

Roland Lannuzel
- Propietario de Producto y Experto en 4D - Después de estudiar electrónica, Roland se dedicó a la informática industrial como desarrollador y consultor, construyendo soluciones para clientes con una variedad de bases de datos y tecnologías. A finales de los años 80 se enamoró de 4D y lo ha utilizado para escribir aplicaciones de negocio que incluyen sistemas de contabilidad, facturación y correo electrónico.Eventualmente se unió a la compañía en 1997, las valiosas contribuciones de Roland incluyen el diseño de especificaciones, herramientas de prueba, demos, así como la formación y hablar con la comunidad 4D en muchas conferencias. Continúa dando forma activamente al futuro de 4D definiendo nuevas características y herramientas de desarrollo de bases de datos.