4D v14.3

EXECUTER METHODE DANS SOUS FORMULAIRE

Accueil

 
4D v14.3
EXECUTER METHODE DANS SOUS FORMULAIRE

EXECUTER METHODE DANS SOUS FORMULAIRE 


 

EXECUTER METHODE DANS SOUS FORMULAIRE ( objetSousForm ; nomMéthode {; retour {; param} {; param2 ; ... ; paramN}} ) 
Paramètre Type   Description
objetSousForm  Texte in Nom de l’objet sous-formulaire
nomMéthode  Texte in Nom de la méthode projet à exécuter
retour  Opérateur, Variable in * si la méthode ne retourne pas de valeur
in Valeur retournée par la méthode
param  Variable in Paramètre(s) à passer à la méthode

La commande EXECUTER METHODE DANS SOUS FORMULAIRE permet d’exécuter la méthode projet nomMéthode dans le contexte de l’objet de sous-formulaire objetSousForm

La méthode projet appelée peut recevoir de 1 à N paramètres dans param et retourner une valeur dans retour. Passez * dans le paramètre retour si la méthode ne retourne pas de paramètres. 

Vous pouvez passer dans nomMéthode le nom de toute méthode projet accessible depuis la base ou le composant exécutant la commande. Le contexte d’exécution est préservé dans la méthode appelée, ce qui signifie que le formulaire courant et l’événement formulaire courant restent définis. Si le sous-formulaire provient d’un composant, la méthode doit appartenir au composant et disposer de la propriété "Partagée entre les composants et la base hôte".

Cette commande doit être appelée depuis la méthode formulaire du formulaire parent (contenant l’objet objetSousForm).

Note : La méthode nomMéthode n'est pas exécutée si objetSousForm ne se trouve pas dans la page courante ou n'est pas encore instancié.

Si cette commande est exécutée correctement, la variable système OK prend la valeur 1, sinon elle prend la valeur 0.

Soit le formulaire "ContactDétail" utilisé comme sous-formulaire dans le formulaire parent "Société". L’objet sous-formulaire qui contient le formulaire ContactDétail est nommé "ContactSousForm". Imaginons que nous souhaitions modifier l’apparence de certains éléments du sous-formulaire en fonction de la valeur de champ(s) de la société (par exemple, "nomcontact" doit passer en rouge lorsque [Société]Ville="New York" et en bleu lorsque [Société]Ville="San Diego"). Ce mécanisme est mis en oeuvre via la méthode SetToColor. Pour pouvoir obtenir ce résultat, la méthode SetToColor ne peut pas être appelée directement depuis le process de l’événement formulaire "Sur chargement" du formulaire parent Société car l’objet "nomcontact" n’appartient pas au formulaire courant, mais au formulaire affiché dans l’objet sous-formulaire "ContactSousForm". La méthode doit donc être exécutée à l’aide de EXECUTER METHODE DANS SOUS FORMULAIRE pour pouvoir fonctionner correctement.

 Au cas ou
    :(Evenement formulaire=Sur chargement)
       Au cas ou
          :([Société]Ville ="New York")
             $Color:=$Red
          :([Société]Ville ="San Diego")
             $Color:=$Blue
          Sinon
             $Color:=$Black
       Fin de cas
       EXECUTER METHODE DANS SOUS FORMULAIRE("ContactSousForm";"SetToColor";*;$Color)
 Fin de cas

Vous développez une base de données qui sera utilisée comme composant. Elle comporte un formulaire projet partagé (nommé par exemple Calendrier) contenant des variables dynamiques ainsi qu’une méthode projet publique permettant de régler le calendrier : SetCalendarDate(varDate).
Si cette méthode était utilisée directement dans la méthode du formulaire Calendrier, vous pourriez l’appeler directement dans l’événement "Sur chargement" :

 SetCalendarDate(Date du jour)
Mais, dans le contexte de la base hôte, imaginons qu’un formulaire projet contienne deux sous-formulaires "Calendrier", dans des objets sous-formulaire appelés "Cal1" et "Cal2". Vous devez régler la date de Cal1 au 01/01/10 et celle de Cal2 au 05/05/10. Vous ne pouvez pas appeler directement SetCalendarDate car la méthode ne "saura" pas à quels formulaire et variables elle devra s’appliquer. Vous devez donc l’appeler via le code suivant : 

 EXECUTER METHODE DANS SOUS FORMULAIRE("Cal1";"SetCalendarDate";*;!01/01/10!)
 EXECUTER METHODE DANS SOUS FORMULAIRE("Cal2";"SetCalendarDate";*;!05/05/10!)

Exemple avancé : dans le même contexte que précédemment, cet exemple propose une méthode générique :

  // Contenu de la méthode SetCalendarDate
 C_DATE($1)
 C_TEXTE($2)
 Au cas ou
    :(Nombre de paramètres=1)
  // Exécution standard de la méthode (comme si elle était exécutée depuis le formulaire lui-même) ou
  // spécifiquement pour un contexte (voir cas 2)
 
    :(Nombre de paramètres=2)
  // Appel depuis l’extérieur, a besoin d’un contexte
  // Appel récursif avec un seul paramètre
       EXECUTER METHODE DANS SOUS FORMULAIRE($2;"SetCalendarDate";*;$1)
 Fin de cas

 
PROPRIÉTÉS 

Produit : 4D
Thème : Langage
Numéro : 1085
Nom intl. : EXECUTE METHOD IN SUBFORM

Cette commande modifie la variable système OK

 
HISTORIQUE 

Créé : 4D v12

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v12.4)
4D - Langage ( 4D v14 R2)
4D - Langage ( 4D v14 R3)
4D - Langage ( 4D v13.5)
4D - Langage ( 4D v14.3)
4D - Langage ( 4D v14 R4)