|
- Evénements gérés par défaut
- Evénements optionnels
- Présentation
- Evénement optionnel : Autorisation de fermeture
- Evénement optionnel : Modification de la taille
- Evénement optionnel : Prise de focus
- Evénement optionnel : Perte de focus
- Evénement optionnel : Avant fermeture par bouton OK / Fermer
- Evénement optionnel : A chaque modification
- Evénement optionnel : Mise au premier-plan de l'application sur la fenêtre
- Evénement optionnel : Mise en arrière plan de l'application depuis la fenêtre
- Evénement optionnel : Changement d'agencement
- Evénement optionnel : Application du thème clair/sombre
Evénements associés aux fenêtres
Evénements gérés par défaut WINDEV et WINDEV Mobile gèrent par défaut les événements suivants (ordre d'apparition sous l'éditeur de code) : | | Evénement | Condition d'exécution |
---|
Déclarations globales | Déclaration des variables globales à la fenêtre. C'est le premier code exécuté lors de l'ouverture de la fenêtre. | Fin d'initialisation | Exécuté lors de l'ouverture de la fenêtre. L'ordre d'exécution des événements est le suivant :- Initialisation des champs de la fenêtre (*)
- Initialisation de la fenêtre
- Prise de focus
Remarque : Si du code de mise à jour de champs est mis dans cet événement, il peut apparaître un effet de clignotement. En effet, le code d'initialisation des champs est alors exécuté avant le code de mise à jour. | Fermeture | Exécuté lors de la fermeture de la fenêtre. Remarques : - Une reprise de saisie sur un des champs de la fenêtre dans ce code empêche la fenêtre de se fermer.
- Si un champ Bouton de type "Abandon" est présent dans la fenêtre, lors de la fermeture de la fenêtre, seul le code de clic de ce bouton est exécuté.
| Versions 20 et supérieuresDemande de mise à jour de l'affichage Nouveauté 20Demande de mise à jour de l'affichage Demande de mise à jour de l'affichage | Permet de regrouper le code de mise à jour des champs de la fenêtre : contenu des champs, état (visible, grisé, ...), libellé à mettre à jour, ...Cet événement peut attendre des paramètres. Il suffit de déclarer une procédure dans l'événement. Par exemple :
// Demande de mise à jour de l'affichage PROCÉDURE DemandeMiseAjour(TypeMiseAJour est un booléen)
Cet événement est lancé sur demande grâce aux fonctions : Lors de l'appel de ces fonctions, il est possible de préciser la valeur des paramètres attendus par l'événement. | Versions 17 et supérieures Nouveauté 17 | Exécuté lorsque l'utilisateur pivote l'écran. Il est par exemple possible de repositionner les champs lors du changement d'orientation de l'écran. | Fermeture d'une fenêtre fille de la fenêtre | Exécuté lors de la fermeture d'une fenêtre fille ouverte depuis la fenêtre en cours. Il est possible de : - connaître le nom de la fenêtre fille fermée grâce à la propriété Nom.
- récupérer la valeur de retour de la fenêtre fille grâce à la propriété ValeurRenvoyée.
Exemple :
// -- Fermeture d'une fenêtre fille de FEN_ListeCommande // Actualise la liste des commandes si besoin SI MaFenêtreFille.ValeurRenvoyée = Vrai ALORS ListeCommande() FIN
Le mot-clé MaFenêtreFille permet de manipuler les caractéristiques de la fenêtre fille. | Versions 18 et supérieures Nouveauté 18 | Permet de mettre à jour le contenu du Widget. Cet événement est exécuté :- à l'ouverture d'une fenêtre de type Widget.
- à intervalle de temps régulier. Cet intervalle est fixé dans l'onglet "Détail" de la fenêtre de description.
Remarque : La fonction WidgetAffiche provoque le réaffichage du Widget et l'exécution de l'événement de rafraîchissement. |
(*) Par défaut, l'événement "Initialisation" de chaque champ est exécuté selon l'ordre de création des différents champs dans la fenêtre. Pour modifier cet ordre d'exécution : - Sous le volet "Fenêtre", dans le groupe "Ordre", cliquez sur "Initialisation".
- Dans la fenêtre qui s'affiche, utilisez les flèches situées sur la droite pour modifier l'ordre d'initialisation des champs.
Attention : Si un ou plusieurs champs utilisent la persistance des champs, le code "A chaque modification" peut être exécuté lors de l'initialisation du champ. Pour plus de détails, consultez Persistance des champs. Présentation Plusieurs événements optionnels peuvent être gérés.
Pour ajouter un événement optionnel : - Sélectionnez le champ voulu.
- Affichez la fenêtre de code de ce champ (touche F2).
- Cliquez sur le lien "Ajouter d'autres événements à xxx" situé à la fin de la fenêtre de code, après le dernier événement.
- La totalité des événements optionnels disponibles pour le champ est affichée.
- Cochez l'événement optionnel à ajouter et validez.
Remarque : Il est possible de sélectionner plusieurs événements optionnels. - L'événement optionnel sélectionné est automatiquement ajouté dans les événements gérés par le champ.
Pour désactiver un événement optionnel, il suffit d'effectuer les mêmes manipulations pour afficher la liste des événements optionnels. Il suffit ensuite de décocher les événements optionnels à supprimer. Remarque : Si le code désactivé contient du code WLangage, ce code est automatiquement supprimé. Il est ainsi possible de gérer par exemple : - le survol du champ par la souris,
- le bouton gauche enfoncé, relâché, avec un double-clic,
- le bouton droit enfoncé, relâché, avec double-clic,
- la roulette de la souris, ...
Versions 26 et supérieuresEvénement optionnel : Autorisation de fermeture Exécuté juste avant l'événement "Fermeture" de la fenêtre, cet événement permet par exemple de faire une vérification lors de la fermeture de la fenêtre. Cet événement peut permettre : - de demander une confirmation,
- d'empêcher la fermeture de la fenêtre. Il suffit pour cela d'utiliser la ligne de code suivante :
Attention : Si un champ Bouton de type "Abandon" est présent dans la fenêtre, lors de la fermeture de la fenêtre, seul le code de clic de ce bouton est exécuté. Nouveauté 26Evénement optionnel : Autorisation de fermeture Exécuté juste avant l'événement "Fermeture" de la fenêtre, cet événement permet par exemple de faire une vérification lors de la fermeture de la fenêtre. Cet événement peut permettre : - de demander une confirmation,
- d'empêcher la fermeture de la fenêtre. Il suffit pour cela d'utiliser la ligne de code suivante :
Attention : Si un champ Bouton de type "Abandon" est présent dans la fenêtre, lors de la fermeture de la fenêtre, seul le code de clic de ce bouton est exécuté. Evénement optionnel : Autorisation de fermeture Exécuté juste avant l'événement "Fermeture" de la fenêtre, cet événement permet par exemple de faire une vérification lors de la fermeture de la fenêtre. Cet événement peut permettre : - de demander une confirmation,
- d'empêcher la fermeture de la fenêtre. Il suffit pour cela d'utiliser la ligne de code suivante :
Attention : Si un champ Bouton de type "Abandon" est présent dans la fenêtre, lors de la fermeture de la fenêtre, seul le code de clic de ce bouton est exécuté. Evénement optionnel : Modification de la taille Exécuté dans les cas suivants : - Iconisation de la fenêtre
- Agrandissement ou changement de taille de la fenêtre
- Restauration de la fenêtre après iconisation
Evénement optionnel : Prise de focus Exécuté lorsque la fenêtre prend le focus (la barre de titre est active) et qu'une autre fenêtre de l'application perd le focus : - l'utilisateur a cliqué sur une autre fenêtre de l'application
- la fonction RepriseSaisie a été exécutée depuis une autre fenêtre de l'application
Cet événement ne sera pas exécuté : - lors de l'ouverture de la première fenêtre du projet.
- lors de l'exécution de la fonction OuvreFille, OuvreFenêtreMobile ou OuvreSoeur à partir de la fenêtre en cours.
- si la fonction Ferme est appelée dans le code d'initialisation de la fenêtre.
- si l'utilisateur clique sur une fenêtre d'un autre programme, puis reclique sur la fenêtre initiale.
Evénement optionnel : Perte de focus Exécuté lorsque la fenêtre perd le focus lors du passage à une autre fenêtre. Cet événement est toujours appelé avant l'événement de prise de focus d'une autre fenêtre dans les cas suivants : - fermeture de la fenêtre (avant l'événement de fermeture)
- l'utilisateur a cliqué sur une autre fenêtre de l'application
- la fonction RepriseSaisie a été exécutée depuis une autre fenêtre de l'application
Cet événement ne sera pas exécuté : - si la fonction RepriseSaisie vers une autre fenêtre a été exécutée dans le code d'initialisation de la fenêtre
- si la fonction Ferme est appelée dans le code d'initialisation de la fenêtre
- si l'utilisateur clique sur une fenêtre d'un autre programme, puis reclique sur la fenêtre initiale
Evénement optionnel : A chaque modification Exécuté lorsqu'un des champs de la fenêtre est modifié (saisie effectuée par l'utilisateur par exemple). Versions 18 et supérieures Nouveauté 18 Versions 18 et supérieures Nouveauté 18 Versions 23 et supérieures Nouveauté 23 Versions 25 et supérieures Nouveauté 25
Documentation également disponible pour…
|
|
|
| |
| | Attention : Ce traitement étant asynchrone, si une exception est levée elle n'est pas captée par un QUAND EXCEPTION positionné dans la déclaration de la fenêtre (contrairement à tous les autres traitements de la fenêtre). Il faut donc obligatoirement gérer les exceptions dans le traitement lui même, par exemple avec un QUAND EXCEPTION placé en début de traitement. |
|
|
|
| |
| |
| |
|
| Ordre des traitements et affichage des données |
|
| Lors de l'Affichage de la fenêtre, le traitement "Demande de mise à jour de l'affichage" est appelé AVANT la "Fin d'initialisation".
Dans ce cas, FenInitialisée() sera faux dans "Demande de mise à jour de l'affichage".
Afin d'afficher les données APRÈS la "Fin d'initialisation" il faut appeler DemandeMiseAJourIHM() dans le traitement "Fin d'initialisation" et alors FenInitialisée() sera vrai. (Appeler ExécuteMiseAJourIHM() fera en sorte que FenInitialisée() sera encore faux car la "Fin d'initialisation" ne sera pas terminée.)
Ensuite il suffit d'ajout une petite optimisation du code dans le traitement "Demande de mise à jour de l'affichage" pour ne pas rafraîchir les données inutilement:
SI FenInitialisée() = Faux ALORS RETOUR |
|
|
|
| |
| |
| |
| |
| |
| |
| | |
| |