En complément des manipulations expliquées dans la vidéo, il faut noter que :
Tous les objets ne disposent pas des mêmes événements : il n’est pas possible par exemple de cocher l’événement "Sur données modifiées" pour un objet bouton, car on ne peut pas "saisir" son contenu (son titre).
voici quelques exemples :
Sur début survol Lorsque la souris "entre dans l’espace aérien" d’un objet.
Sur données modifiées A la sortie d’un champ ou un variable dont le contenu a été modifié. On l’utilise principalement pour des contrôles de saisie, formatage (majuscules, minuscules), recherches, recalculs
Sur clic Lors du clic sur un objet (principalement les boutons, popup, menus, ...) Peut également être utilisé sur des objets saisissables
Sur gain focus L’objet vient de recevoir le focus (on a cliqué dessus, on est arrivé avec la touche tabulation ou on y est allé par programmation)
Sur chargement Juste avant qu’un formulaire soit affiché à l’écran ou utilisé lors d’une impression. C’est lors de cet événement qu’on effectue en général les initialisations.
Sur impression corps Lors de l’impression d’un enregistrement. Permet par exemple de valoriser des variables de cumul, concaténation...
Cette liste vous permet de comprendre cette notion d’événement. Reportez-vous à la documentation de 4D pour la description complète des événements.
Une précision importante que se posent toujours les débutants : "Dois- je cocher les événements du formulaire ou les événements des objets ?" Tout dépend de l’endroit où vous allez écrire votre méthode. La méthode formulaire ne devrait en théorie contenir que ce qui concerne le traitement du formulaire en globalité :
redimensionnement
appel extérieur
affichage ou masquage d’objets
...
et les méthodes objets ce qui est spécifique à chaque objet (bouton, champ...). Ça reste un principe, mais les raisons peuvent être multiples pour en justifier la transgression.
Retenez ceci :
Méthode formulaire : Centralisé, traitement global, facile à maintenir. Risque d’être exécuté plus que nécessaire
Méthode objet : Spécifique, adapté, exécuté seulement quand c’est nécessaire. Permet facilement le portage d’un objet par simple Copier-Coller (surtout si vous utilisez les pointeurs). Oblige à dupliquer la méthode ou l’appel de méthode dans chacun des objets.
Il arrive qu’on déplace certains traitements sur la méthode formulaire.
Par exemple vous devez recalculer une valeur en fonction de 10 paramètres saisissables. À chaque modification de paramètre, il est nécessaire de refaire le calcul. Plutôt que de mettre la formule (ou appel de méthode) dans chacun des 10 champs paramètres, il est possible de déplacer ce calcul dans la méthode formulaire.
Dans ce cas, c’est plus simple et centralisé, par contre, il est fort probable que le recalcul sera effectué plus souvent que nécessaire, notamment lors de la modification d’un zone qui n’entre pas dans le calcul final. (NB : 4D permet de savoir quel objet a été modifié, on peut donc conditionner le calcul en fonction de cette information).
Il est important en ce qui concerne les événements de bien en connaître l'ordre d'exécution. Par exemple pour un bouton, les événements sont exécutés dans l’ordre suivant :
sur début survol
sur survol
sur gain focus
sur clic (éventuellement)
sur fin survol
sur perte focus
Un champ ou une variable sur laquelle on clique :
sur début survol
sur survol
sur gain focus
sur données modifiées (éventuellement)
sur perte focus
sur fin survol
Pour gagner du temps dans l'écriture de votre code et le fiabiliser, pensez à paramétrer les macros (fichier "macros.xml").
Vous pourrez par exemple créer une macro qui écrit à votre place le code suivant lorsque vous tapez "$evt" dans votre méthode :
Pendant votre phase d'apprentissage de 4D je vous conseille de mettre vos méthodes dans vos objets, vous aurez plus de souplesse pour corriger. Ensuite, commencez par utiliser des appels de méthodes génériques et enfin quand tout fonctionne correctement, voyez ce que vous pouvez déplacer de vos méthodes objets vers votre méthode formulaire ou méthodes projets et enfin passer des pointeurs.
Pour aller plus loin : Analysez bien le fonctionnement des événements car ils vous permettront de comprendre précisément à quel moment s'exécute votre programmation. Vous y trouverez aussi de nombreuses idées pour des mises en oeuvre performantes en utilisant par exemple les événements :