Vous vous demandez comment créer une interface utilisateur agréable et dynamique ? En général, lorsqu’un formulaire est redimensionné, les objets du formulaire dont les propriétés de dimensionnement horizontal ou vertical sont définies pour se déplacer ou s’agrandir, sont automatiquement redimensionnés. Dans certains cas (par exemple, pour une gestion plus fine de l’interface utilisateur), les développeurs choisissent de gérer la taille et la position des objets du formulaire par programmation. Pour ce faire, ils vérifient l’événement « on resized » qui est déclenché dans la méthode du formulaire. Mais que se passe-t-il lorsque le formulaire contient un ou plusieurs sous-formulaires ? Sur plusieurs niveaux ? Cet article de blog vous donne les réponses !
Sous-formulaires, sous-sous-formulaires et…
La gestion des objets sous-formulaires lorsque l’objet sous-formulaire « parent » est redimensionné peut sembler compliquée, mais ce n’est pas le cas ! Cela peut être fait soit en utilisant la commande Execute method in subform, soit en modifiant la valeur associée de l’objet sous-formulaire, puis – à l’intérieur du sous-formulaire – en gérant l’événement on bound variable change généré.
A partir de 4D v18, c’est encore plus simple ! Vous pouvez gérer directement l’événement on resize dans la méthode du sous-formulaire ! Beaucoup plus pratique, logique et facile ! Cet événement sera déclenché chaque fois que la taille de l’objet sous-formulaire sera modifiée dans le formulaire principal. Cela peut se produire lorsque :
- le formulaire principal est redimensionné (ainsi que l’objet subform). C’est le cas le plus évident.
- un splitter modifie la hauteur ou la largeur de l’objet sous-formulaire. Ce n’est pas aussi évident, mais cela vaut la peine de le mentionner.
- la taille d’un objet sous-formulaire est modifiée par programmation à l’aide de la commande OBJECT SET COORDINATES. Ce cas est encore moins évident, ne l’oubliez pas 🙂
Conclusion
Si vous gérez déjà ce genre de scénarios dans votre application, vous pouvez envisager de simplifier votre code (ou pas ! « If it ain’t broke, don’t fix it »). Mais pour les développements futurs, vous apprécierez cette simplification de la gestion des événements !