Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
CALL FORM
|
CALL FORM ( fenêtre ; méthode {; param}{; param2 ; ... ; paramN} ) | ||||||||
Paramètre | Type | Description | ||||||
fenêtre | RefFen |
![]() |
Numéro de référence de la fenêtre | |||||
méthode | Texte |
![]() |
Nom de la méthode projet à appeler | |||||
param | Expression |
![]() |
Paramètre(s) passé(s) à la méthode | |||||
La commande CALL FORM exécute la méthode projet dont le nom est passé dans méthode avec un ou plusieurs param(s) optionnel(s) dans le contexte d'un formulaire affiché dans la fenêtre, indépendamment du process auquel appartient la fenêtre.
Tout comme dans la communication interprocess basée sur les workers (voir A propos des workers), une boîte aux lettres est associée à chaque fenêtre et peut être utilisée lorsque la fenêtre affiche un formulaire (après l'événement On Load). CALL FORM encapsule le nom de la méthode et ses arguments dans un message envoyé dans la boîte aux lettres de la fenêtre. Le formulaire exécute alors le message dans son propre process. Le process appelant peut être coopératif ou préemptif, par conséquent cette fonctionnalité permet à un process préemptif d'échanger des informations avec des formulaires.
Dans fenêtre, passez le numéro de référence de la fenêtre affichant le formulaire appelé.
Dans méthode, passez le nom de la méthode projet qui doit être exécutée dans le contexte du process parent de la fenêtre.
Vous pouvez aussi passer des paramètres à la méthode en utilisant un ou plusieurs paramètres param. Vous passez les paramètres de la même façon que vous les passeriez à une sous-routine (voir la section ). Lors de l'exécution dans le contexte du formulaire, la méthode reçoit les valeurs des paramètres dans $1, $2, et ainsi de suite. N'oubliez pas que des tableaux ne peuvent pas être passés en paramètre d'une méthode. En outre, dans le contexte de la commande CALL FORM, les points suivants doivent être pris en compte :
Vous voulez ouvrir deux fenêtres de dialogue à partir d'un même formulaire, mais avec des couleurs de fonds différentes et des messages différents. Vous souhaitez également envoyer des messages par la suite et les afficher dans chaque fenêtre de dialogue.
Dans le formulaire principal, un bouton ouvre les deux dialogues :
//Méthode objet pour créer les formulaires
//Première fenêtre
formRef1:=Open form window("FormMessage";Palette form window;On the left)
SET WINDOW TITLE("MyForm1";formRef1)
DIALOG("FormMessage";*)
SHOW WINDOW(formRef1)
//Seconde fenêtre
formRef2:=Open form window("FormMessage";Palette form window;On the left+500)
SET WINDOW TITLE("MyForm2";formRef2)
DIALOG("FormMessage";*)
SHOW WINDOW(formRef2)
//Envoi des couleurs
CALL FORM(formRef1;"doSetColor";0x00E6F2FF)
CALL FORM(formRef2;"doSetColor";0x00F2E6FF)
//Création des messages
CALL FORM(formRef1;"doAddMessage";Current process name;"Hello Form 1")
CALL FORM(formRef2;"doAddMessage";Current process name;"Hello Form 2")
La méthode doAddMessage ajoute simplement une ligne dans la list box du formulaire "FormMessage" :
C_TEXT($1) //Origine du message
C_TEXT($2) //Message à afficher
//Récupère le message contenu dans $2 et l'envoie dans la list box
$p:=OBJECT Get pointer(Object named;"Column1")
INSERT IN ARRAY($p->;1)
$p->{1}:=$1+" sends "+$2
A l'utilisation, vous obtenez le résultat suivant :
Vous pouvez alors ajouter d'autres messages en exécutant à nouveau la commande CALL FORM :
CALL FORM(formRef1;"doAddMessage";Current process name;"Hello 2 Form 1")
CALL FORM(formRef2;"doAddMessage";Current process name;"Hello 2 Form 2")
Vous pouvez utiliser la commande CALL FORM pour passer des paramètres personnalisés à un formulaire, par exemple des valeurs de configuration, sans avoir à utiliser des variables process :
$win:=Open form window("form")
CALL FORM($win;"configure";param1;param2)
DIALOG("form")
Produit : 4D
Thème : Evénements formulaire
Numéro :
1391
Créé : 4D v15 R5
Modifié : 4D v16 R4
4D - Langage ( 4D v19)
4D - Langage ( 4D v19.1)
4D - Langage ( 4D v19.4)
4D - Langage ( 4D v19.5)
4D - Langage ( 4D v19.6)
4D - Langage ( 4D v19.7)
4D - Langage ( 4D v19.8)