Découvrez les commandes Print form et FORM LOAD mises à jour

Traduit automatiquement de Deepl

4D v16 R5 avait apporté une amélioration significative à la commande DIALOG. Cette amélioration consistait en la possibilité de passer un nouveau paramètre « formData » de type objet. Nous avons été ravis d’apprendre que ce nouvel ajout avait été bien accueilli par les développeurs de 4D.

Avec 4D v20, deux autres commandes sont mises à jour, Print form et FORM LOAD ! Les avantages seront tout aussi importants. Le contenu de l’objet passé en paramètre sera directement exploitable dans les formulaires imprimés ou chargés en mémoire.

code SAMPLE

Imprimer le formulaire

La commande PRINT FORM est toujours largement utilisée par les développeurs 4D grâce à ses récentes améliorations.

La commande PRINT FORM peut désormais recevoir un paramètre optionnel, de type objet, qui sera accessible via la fonction Form dans le formulaire invoqué. Soit directement en utilisant la fonction Form comme expression pour les objets du formulaire (Form.firstname / Form.lastname / etc.) mais également lors de l’exécution de l’événement 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)

Lorsque le formulaire « Print_obj » ressemble à ceci :

 

FORM LOAD

Selon le même principe, la commande FORM LOAD peut désormais recevoir un objet en paramètre. S’il est passé (il est également optionnel), le contenu de cet objet pourra être exploité de différentes manières et modifié lors de l’exécution de l’événement on load (uniquement géré par cet événement et uniquement à l’intérieur d’une séquence 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

…où le « GlobalForm » contient une boîte à liste « LB » utilisant Form.LBcollection comme source de données.

blank

Conclusion

Cette nouvelle possibilité de programmation vous permettra de gagner du temps et d’alléger votre code.

Comme d’habitude, n’hésitez pas à nous faire part de vos commentaires sur les forums 4D. Nous attendons vos commentaires avec impatience !

 

Roland Lannuzel
- Product Owner & 4D Expert - Après avoir étudié l'électronique, Roland s'est lancé dans l'informatique industrielle en tant que développeur et consultant, créant des solutions pour les clients avec une variété de bases de données et de technologies. À la fin des années 80, il est tombé amoureux de 4D et l'a utilisé pour écrire des applications commerciales, notamment des systèmes de comptabilité, de facturation et de messagerie électronique. Il a rejoint la société en 1997 et a contribué à la conception de spécifications, d'outils de test et de démonstrations, ainsi qu'à la formation et à la présentation de la communauté 4D lors de nombreuses conférences. Il continue à façonner activement l'avenir de 4D en définissant de nouvelles fonctionnalités et des outils de développement de bases de données.