Aller au contenu principal
Version: 20 R8 BETA

FORM LOAD

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

ParamètresTypeDescription
aTableTableFormulaire table à charger (si omis, charger un formulaire projet)
formText, ObjectNom (chaîne) du formulaire (projet ou table), ou chemin POSIX (chaîne) vers un fichier .json décrivant le formulaire, ou objet décrivant le formulaire à ouvrir
formDataObjectDonnées à associer au formulaire
*OpérateurSi passé = la commande s'applique à la base de données hôte lorsqu'elle est exécutée à partir d'un composant (paramètre ignoré en dehors de ce contexte)

Description

The FORM LOAD command is used to load the form in memory in the current process along with formData (optional) in order to print its data or parse its contents.La commande FORM LOAD est utilisée pour charger le formulaire form en mémoire dans le process courant avec formData (facultatif) afin d'imprimer ses données ou d'analyser son contenu. Il ne peut y avoir qu'un seul formulaire courant par process.

Dans le paramètre form, vous pouvez passer soit :

  • le nom d'un formulaire,
  • le chemin (en syntaxe POSIX) d'un fichier .json valide contenant la description du formulaire à utiliser,
  • un objet contenant la description du formulaire à utiliser.

Lorsque la commande est exécutée à partir d'un composant, elle charge les formulaires du composant par défaut. Si vous passez le paramètre *, la méthode charge les formulaires de la base hôte.

formData

Optionnellement, vous pouvez passer des paramètres au formulaire form en utilisant soit l'objet formData, soit l'objet de classe de formulaire automatiquement instancié par 4D si vous avez associé une classe utilisateur au formulaire. Toutes les propriétés de l'objet de données du formulaire seront alors disponibles dans le contexte du formulaire par le biais de la commande Form. L'objet de données formulaire est disponible dans l'événement formumaire On Load.

Pour des informations détaillées sur l'objet de données formulaire, veuillez vous référer à la commande DIALOG.

Impression des données

Pour pouvoir exécuter cette commande, une tâche d'impression doit être ouverte au préalable à l'aide de la commande OPEN PRINTING JOB. La commande OPEN PRINTING JOB fait un appel implicite à la commande FORM UNLOAD, donc dans ce contexte il est nécessaire d'exécuter FORM LOAD. Une fois chargé, form devient le formulaire d'impression courant. Toutes les commandes de gestion des objets, et en particulier la commande Print object, fonctionnent 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 LOAD), il est fermé et remplacé par form. Vous pouvez ouvrir et fermer plusieurs formulaires projet dans la même session d'impression. Le changement de formulaire d'impression via la commande FORM LOAD ne génère pas de sauts de page. Il appartient au développeur de gérer les sauts de page.

Seul l'événement formulaire On Load est exécuté lors de l'ouverture du formulaire projet, ainsi que toutes les méthodes objet du formulaire. Les autres événements formulaire sont ignorés. L'événement formulaire On Unload est exécuté à la fin de l'impression.

Pour préserver la cohérence graphique des formulaires, il est recommandé d'appliquer la propriété d'apparence "Printing" quelle que soit la plate-forme.

Le formulaire d'impression courant est automatiquement fermé lorsque la commande CLOSE PRINTING JOB est appelée.

Analyse du contenu du formulaire

Cela consiste à charger un formulaire hors écran à des fins d'analyse. Pour cela, il vous suffit d'appeler FORM LOAD en dehors du contexte d'une tâche d'impression. Dans ce cas, les événements formulaire ne sont pas exécutés.

FORM LOAD peut être utilisé avec les commandes FORM GET OBJECTS et OBJECT Get type afin d'effectuer tout type de traitement sur le contenu du formulaire. Vous devez ensuite appeler la commande FORM UNLOAD pour libérer le formulaire de la mémoire.

Notez que dans tous les cas, le formulaire à l'écran reste chargé (il n'est pas affecté par la commande FORM LOAD) et qu'il n'est donc pas nécessaire de le recharger après avoir appelé FORM UNLOAD.

Rappel : Dans le contexte hors écran, n'oubliez pas d'appeler FORM UNLOAD pour éviter tout risque de saturation de la mémoire.

Exemple 1

Appel d'un formulaire projet dans une tâche d'impression :

 OPEN PRINTING JOB
 FORM LOAD("print_form")
  // exécution des événements et des méthodes objets

Exemple 2

Appel d'un formulaire table dans une tâche d'impression :

 OPEN PRINTING JOB
 FORM LOAD([People];"print_form")
  // exécution des événements et des méthodes objets

Exemple 3

Analyse du contenu des formulaires pour effectuer des traitements dans les zones de saisie de texte :

FORM LOAD([People] ; "my_form")
// sélection du formulaire sans exécution d'événements ou de méthodes
FORM GET OBJECTS(arrObjNames;arrObjPtrs;arrPages;*)
For($i;1 ;Size of array (arrObjNames))
If(OBJECT Get type(*;arrObjNames{$i})=Object type text input)
//… processing
End if
End for
FORM UNLOAD //ne pas oublier de décharger le formulaire

Exemple 4

L'exemple suivant retourne le nombre d'objets dans un formulaire JSON :

 ARRAY TEXT(objectsArray;0)  //tri des éléments du formulaire dans les tableaux
 ARRAY POINTER(variablesArray;0)
 ARRAY INTEGER(pagesArray;0)
 
 FORM LOAD("/RESOURCES/OutputForm.json") //load the form
 FORM GET OBJECTS(objectsArray;variablesArray;pagesArray;Form all pages+Form inherited)
 
 ALERT("The form contains "+String(size of array(objectsArray))+" objects") //nombre d'objets

le résultat affiché est :

Exemple 5

Vous voulez imprimer un formulaire contenant une list box. Lors de l'événement on load, 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) //stocker la collection in $formData
 $over:=False
 Repeat
    $full:=Print object(*;"LB") // la datasource de la listbox "LB" 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 formulaire, 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

Voir également

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

Propriétés

Numéro de commande1103
Thread safe