Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20.6
FORM CHARGER
|
FORM CHARGER ( {laTable ;} formulaire {; formData}{; *} ) | ||||||||
Paramètre | Type | Description | ||||||
laTable | Table |
![]() |
Table du formulaire à charger (si omis, charger un formulaire projet) | |||||
formulaire | Chaîne, Objet |
![]() |
Nom du formulaire table ou projet à utiliser, ou Chemin POSIX (chaîne) d'un fichier .json décrivant le formulaire, ou Objet décrivant le formulaire |
|||||
formData | Objet |
![]() |
Data to associate to the form | |||||
* | Opérateur |
![]() |
Si passé = la commande s’applique à la base hôte lorsqu’elle est exécutée depuis un composant (paramètre ignoré hors de ce contexte) | |||||
La commande FORM CHARGER vous permet de charger le formulaire en mémoire dans le process courant avec formData (facultatif) afin d'imprimer des données ou d'analyser son contenu. Il ne peut y avoir qu'un seul formulaire courant par process.
Dans le paramètre formulaire, vous pouvez passer soit :
Lorsque la commande est exécutée à partir d'un composant, elle charge par défaut les formulaires du composant. Si vous passez le paramètre *, la méthode charge les formulaires de la base de données de l'hôte.
En option, vous pouvez transmettre des paramètres au formuliare à l'aide de l'objet formData. Toutes les propriétés de l'objet formData seront alors disponibles dans le contexte du formulaire par l'intermédiaire de la commande Form. Par exemple, si vous passez un objet contenant {"version", "12"} dans formData, vous pourrez obtenir ou définir la valeur de la propriété "version" dans le formulaire en appelant :
L'objet formData est disponible dans l'événement Sur chargement formulaire.
formData vous permet de passer en toute sécurité des paramètres à vos formulaires, quel que soit le contexte d'appel. En particulier, si le même formulaire est appelé à différents endroits dans le même processus, vous pourrez toujours accéder à ses valeurs spécifiques en appelant simplement Form.myProperty.
Note : Si vous ne passez pas le paramètre formData ou si vous passez un objet non défini, [#current_title] crée automatiquement un nouvel objet vide lié au formulaire, disponible via la commande Form.
Pour que cette commande puisse être exécutée, une tâche d'impression doit avoir été ouverte au préalable à l'aide de la commande OUVRIR TACHE IMPRESSION. La commande OUVRIR TACHE IMPRESSION effectue un appel implicite à la commande FORM LIBERER, il est donc nécessaire d’exécuter FORM CHARGER dans ce contexte. Une fois chargé, le formulaire devient le formulaire d’impression courant. Toutes les commandes de gestion des objets, et en particulier la commande Imprimer objet, travaillent avec ce formulaire.
Si un formulaire d’impression avait déjà été chargé au préalable (via un appel précédent à la commande FORM CHARGER), il est refermé et remplacé par formulaire. Vous pouvez ouvrir et refermer plusieurs formulaires dans la même session d’impression. Changer de formulaire d’impression via la commande FORM CHARGER ne génère pas de saut de page, il revient au développeur de les gérer.
Seul l’événement formulaire Sur chargement est exécuté durant l’ouverture du formulaire, ainsi que les méthodes des objets du formulaire. Les autres événements formulaire sont ignorés. L’événement formulaire Sur libération est exécuté à l’issue de l’impression.
Pour préserver la cohérence graphique des formulaires, il est conseillé d’appliquer la propriété d’apparence "Impression" sur toutes les plates-formes.
Le formulaire d’impression courant est automatiquement refermé lorsque la commande FERMER TACHE IMPRESSION est appelée.
Cette possibilité consiste à charger un formulaire hors-écran à des fins d’analyse. Pour effectuer cette action, il suffit d’appeler FORM CHARGER en-dehors d’un contexte de tâche d’impression. Dans ce cas, les événements formulaire ne sont pas exécutés.
FORM CHARGER peut être utilisé avec les commandes FORM LIRE OBJETS et OBJET Lire type afin d’effectuer tout type de traitement sur le contenu du formulaire. Il est ensuite impératif d'appeler la commande FORM LIBERER afin de décharger le formulaire de la mémoire.
A noter que dans tous les cas, le formulaire à l’écran reste chargé (il n’est pas touché par la commande FORM CHARGER), il n’est pas nécessaire de le recharger après un FORM LIBERER.
Rappel : Dans le contexte du hors-écran, n'oubliez pas d'appeler FORM LIBERER afin d'éviter tout risque de saturation de la mémoire.
Appel d’un formulaire projet en tâche d’impression :
OUVRIR TACHE IMPRESSION
FORM CHARGER("print_form")
// exécution des événements et des méthodes objet
Appel d’un formulaire table en tâche d’impression :
OUVRIR TACHE IMPRESSION
FORM CHARGER([People];"print_form")
// exécution des événements et des méthodes objet
Analyse du contenu d’un formulaire pour effectuer un traitement sur les zones de saisie de texte :
FORM CHARGER([People];"my_form")
// sélection du formulaire sans exécution des événements ni des méthodes
FORM LIRE OBJETS(tabNomsObj;tabPtrObj;tabPages;*)
Boucle($i;1;Taille tableau(tabNomsObj))
Si(OBJET Lire type(*;tabNomsObj{$i})=Objet type saisie texte)
//… traitement
Fin de si
Fin de boucle
FORM LIBERER //ne pas oublier
L'exemple suivant retourne le nombre d'objets contenu dans un formulaire dynamique (JSON) :
TABLEAU TEXTE(objectsArray;0)
TABLEAU POINTEUR(variablesArray;0)
TABLEAU ENTIER(pagesArray;0)
FORM CHARGER("/RESOURCES/OutputForm.json") //on charge le formulaire
FORM LIRE OBJETS(objectsArray;variablesArray;pagesArray;Form toutes les pages+Form hérité)
ALERTE("Le formulaire contient "+Chaine(Taille tableau(objectsArray))+" objets") //afficher le nombre d'objets
Résultat :
Vous souhaitez imprimer un formulaire contenant une list box. Lors de l'événement Sur chargement, vous souhaitez que le contenu de la list box soit modifié.
1. Dans la méthode d'impression, vous écrivez :
var $formData : Object
var $over : Boolean
var $full : Boolean
OPEN PRINTING JOB
$formData:=New object
$formData.LBcollection:=New collection()
... //remplir la collection avec des données
FORM LOAD("GlobalForm";$formData) //enregistrer la collection dans $formData
$over:=False
Repeat
$full:=Print object(*;"LB") // la source de données de cette "LB" list box est 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. Dans la méthode des formulaires, vous pouvez écrire :
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
FORM LIBERER
Imprimer objet
LISTBOX LIRE OBJETS
Nom du formulaire courant
OBJET Lire type
Produit : 4D
Thème : Formulaires
Numéro :
1103
Nom intl. : FORM LOAD
Créé : 4D v12
Modifié : 4D v14
Renommé : 4D v14 (OUVRIR FORMULAIRE IMPRESSION)
Modifié : 4D v16 R6
Modifié : 4D v20
4D - Langage ( 4D v20)
4D - Langage ( 4D v20.1)
4D - Langage ( 4D v20.2)
4D - Langage ( 4D v20.3)
4D - Langage ( 4D v20.4)
4D - Langage ( 4D v20.5)
4D - Langage ( 4D v20.6)