A partir de 4D v19 R5, la possibilité d’associer une variable à un sous-formulaire a enrichi les possibilités d’interfaces et de communication entre formulaires et sous-formulaires. Les moyens de communication sont désormais simplifiés par deux nouvelles commandes : Say hello to OBJECT Get subform container value et OBJECT SET SUBFORM CONTAINER VALUE.
Améliorer la communication entre formulaires et sous-formulaires
Deux nouvelles commandes
Les nouvelles commandes OBJECT Get subform container value et OBJECT SET SUBFORM CONTAINER VALUE doivent être utilisées dans le contexte du sous-formulaire.
La première – OBJECT Get subform container value sera le plus souvent utilisée lorsqu’un événement On Bound Variable Change est généré, c’est-à-dire après que la variable (ou l’expression) associée au sous-formulaire du formulaire parent soit modifiée. Il est donc utilisé pour lire cette nouvelle valeur.
La seconde – OBJECT SET SUBFORM CONTAINER VALUE sera utilisée si, à partir du sous-formulaire, vous souhaitez modifier la valeur de la variable (ou de l’expression) associée au sous-formulaire du formulaire parent.
Pourquoi ces commandes ?
Jusqu’à présent, il y avait deux façons d’obtenir cette information.
Le moyen le plus simple(et le plus récent) est d’associer une variable de type objet au sous-formulaire. Dans ce cas, les attributs de cet objet sont accessibles directement par la fonction Form au sein du sous-formulaire. Cela fonctionne bien mais utiliser un objet quand on a besoin d’une simple valeur n’est pas forcément une bonne pratique.
La deuxième façon(plus historique) consiste à créer un pointeur vers la variable en question via la commande OBJECT Get pointer avec le paramètre Object subform container. Cela fonctionne, mais uniquement lorsqu’un variable est associé à des sous-formulaires. Malheureusement, cela n’est pas possible lorsqu’il s’agit d’une expression (par exemple, Form.myValue) car il n’est pas possible de créer un pointeur sur une expression.
Ces deux commandes représentent donc la solution la plus pratique et la plus directe pour les cas simples ! Elles simplifieront la programmation des cas les plus courants. Le code sera plus lisible et plus facile à maintenir.
Bonne programmation avec 4D !