4D v14.3Evenement formulaire |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v14.3
Evenement formulaire
|
Evenement formulaire -> Résultat | ||||||||
Paramètre | Type | Description | ||||||
Résultat | Entier long |
![]() |
Numéro d'événement formulaire | |||||
Evenement formulaire retourne une valeur numérique qui identifie le type d'événement formulaire qui vient de se produire. Généralement, Evenement formulaire s'utilise dans une méthode formulaire ou une méthode objet.
4D fournit des constantes prédéfinies (placées dans le thème Evénements formulaire) permettant de comparer les valeurs retournées par la commande Evenement formulaire. Certains événements sont génériques (générés pour tout type d'objet), d'autres sont spécifiques à un type d'objet particulier.
Constante | Type | Valeur | Commentaire |
Sur chargement | Entier long | 1 | Le formulaire s'affiche ou s'imprime |
Sur validation | Entier long | 3 | La saisie des données dans l'enregistrement est validée |
Sur clic | Entier long | 4 | Un clic est survenu sur un objet |
Sur entête | Entier long | 5 | L'en-tête du formulaire va être imprimé ou affiché |
Sur impression sous total | Entier long | 6 | Une rupture du formulaire va être imprimée |
Sur impression pied de page | Entier long | 7 | Le pied de page du formulaire va être imprimé |
Sur affichage corps | Entier long | 8 | Un enregistrement va être affiché dans la liste ou une ligne va être affichée dans la list box |
Sur appel extérieur | Entier long | 10 | Le formulaire a reçu un appel de la commande APPELER PROCESS |
Sur activation | Entier long | 11 | La fenêtre du formulaire passe au premier plan |
Sur désactivation | Entier long | 12 | La fenêtre du formulaire passe en arrière-plan |
Sur double clic | Entier long | 13 | Un double-clic est survenu sur un objet |
Sur perte focus | Entier long | 14 | Un objet de formulaire perd le focus |
Sur gain focus | Entier long | 15 | Un objet de formulaire prend le focus |
Sur déposer | Entier long | 16 | Des données sont déposées sur un objet |
Sur avant frappe clavier | Entier long | 17 | Un caractère vient d'être saisi dans l'objet qui a le focus. Lire texte edite retourne le contenu sans ce caractère |
Sur menu sélectionné | Entier long | 18 | Une commande de menu a été sélectionnée |
Sur appel zone du plug in | Entier long | 19 | Un plug-in demande que sa méthode objet soit exécutée |
Sur données modifiées | Entier long | 20 | Les données d'un objet ont été modifiées |
Sur glisser | Entier long | 21 | Des données sont glissées sur un objet |
Sur case de fermeture | Entier long | 22 | On a cliqué sur la case de fermeture de la fenêtre |
Sur impression corps | Entier long | 23 | Le corps du formulaire va être imprimé |
Sur libération | Entier long | 24 | Le formulaire se referme et est déchargé |
Sur ouverture corps | Entier long | 25 | Le formulaire détaillé associé au formulaire sortie ou à la listbox est sur le point d'être ouvert |
Sur fermeture corps | Entier long | 26 | Le formulaire détaillé se referme et on retourne au formulaire sortie |
Sur minuteur | Entier long | 27 | Le nombre de ticks défini par FIXER MINUTEUR est atteint |
Sur après frappe clavier | Entier long | 28 | Un caractère vient d'être saisi dans l'objet qui a le focus. Lire texte edite retourne le contenu avec ce caractère. |
Sur redimensionnement | Entier long | 29 | La fenêtre du formulaire est redimensionnée |
Sur après tri | Entier long | 30 | (List box uniquement) Un tri standard vient d'être effectué dans une colonne de list box |
Sur nouvelle sélection | Entier long | 31 |
|
Sur déplacement colonne | Entier long | 32 | (List box uniquement) Une colonne de list box est déplacée par l’utilisateur via le glisser-déposer |
Sur redimensionnement colonne | Entier long | 33 | (List box uniquement) La largeur d’une colonne de list box est modifiée |
Sur déplacement ligne | Entier long | 34 | (List box uniquement) Une ligne de list box est déplacée par l’utilisateur via le glisser-déposer |
Sur début survol | Entier long | 35 | Le curseur de la souris entre dans la zone graphique d’un objet |
Sur fin survol | Entier long | 36 | Le curseur de la souris sort de la zone graphique d’un objet |
Sur survol | Entier long | 37 | Le curseur de la souris a bougé d’au moins un pixel OU une touche de modification (Ctrl, Alt, Verr Maj.) a été enfoncée. Si l'événement est coché pour un objet uniquement, il n'est généré que lorsque le curseur se trouve dans la zone graphique de l'objet |
Sur clic flèche | Entier long | 38 | (Boutons 3D uniquement) La zone “flèche” d'un bouton 3D reçoit un clic |
Sur clic long | Entier long | 39 | (Boutons 3D uniquement) Un bouton 3D reçoit un clic et le bouton de la souris reste enfoncé pendant un certain laps de temps |
Sur chargement ligne | Entier long | 40 | En mode saisie en liste, un enregistrement est chargé en modification (l’utilisateur a cliqué sur la ligne de l’enregistrement et un champ passe en édition) |
Sur avant saisie | Entier long | 41 | (List box uniquement) Une cellule de list box est sur le point de passer en mode édition |
Sur clic entête | Entier long | 42 | (List box uniquement) Un clic est survenu dans l’en-tête d’une colonne de list box |
Sur déployer | Entier long | 43 | (Listes hiérarchiques et List box hiérarchiques) Un élément de liste hiérarchique ou de list box hiérarchique a été déployé via un clic ou une touche du clavier |
Sur contracter | Entier long | 44 | (Listes hiérarchiques et list box hiérarchiques) Un élément de liste hiérarchique ou de list box hiérarchique a été contracté via un clic ou une touche du clavier |
Sur après modification | Entier long | 45 | Le contenu de l'objet saisissable qui a le focus vient d'être modifié |
Sur début glisser | Entier long | 46 | Un objet est en cours de glisser |
Sur début chargement URL | Entier long | 47 | (Zones Web uniquement) Un nouvel URL est chargé dans la zone Web |
Sur chargement ressource URL | Entier long | 48 | (Zones Web uniquement) Une nouvelle ressource est chargée dans la zone Web |
Sur fin chargement URL | Entier long | 49 | (Zones Web uniquement) Toutes les ressources de l'URL ont été chargées |
Sur erreur chargement URL | Entier long | 50 | (Zones Web uniquement) Une erreur s'est produite durant le chargement de l'URL |
Sur filtrage URL | Entier long | 51 | (Zones Web uniquement) Un URL a été bloqué par la zone Web |
Sur ouverture lien externe | Entier long | 52 | (Zones Web uniquement) Un URL externe a été ouvert dans le navigateur |
Sur refus ouverture fenêtre | Entier long | 53 | (Zones Web uniquement) Une fenêtre pop up a été bloquée |
Sur modif variable liée | Entier long | 54 | La variable liée à un sous-formulaire est modifiée. |
Sur bouton barre outils Mac | Entier long | 55 | L’utilisateur a cliqué sur le bouton de gestion de la barre d’outils sous Mac OS |
Sur changement page | Entier long | 56 | On a changé de page courante dans le formulaire |
Sur clic pied | Entier long | 57 | (List box uniquement) Un clic est survenu dans le pied d’une list box ou d’une colonne de list box |
Sur action suppression | Entier long | 58 | (Listes hiérarchiques et List box) L’utilisateur a demandé à supprimer un élément |
Sur défilement image | Entier long | 59 | L'utilisateur fait défiler le contenu d'un champ ou d'une variable image à l'aide de la souris ou d'une touche du clavier. |
Note : Les événements spécifiques des formulaires de sortie ne peuvent pas être utilisés avec les formulaires projet. Il s'agit de : Sur affichage corps, Sur ouverture corps, Sur fermeture corps, Sur chargement ligne, Sur entête, Sur impression corps, Sur impression sous total, Sur impression pied de page.
Lorsqu'un événement formulaire se produit, 4D effectue les actions suivantes :
Les différentes méthodes objet ne sont pas appelées dans un ordre particulier. La règle est que les méthodes objet sont toujours appelées avant la méthode formulaire. Dans le cas des sous-formulaires, les méthodes objet du formulaire sortie du sous-formulaire sont d'abord appelées, puis la méthode formulaire du formulaire sortie, puis enfin 4D appelle les méthodes objet du formulaire parent. Autrement dit, lorsqu'un objet est un sous-formulaire, 4D utilise la même règle pour les méthodes formulaire et objet dans le sous-formulaire.
Lorsque, pour un événement particulier, la propriété d'événement du formulaire n'est pas sélectionnée, cela n'empêche pas les appels aux méthodes des objets pour lesquels l'événement est sélectionné. Autrement dit, la sélection ou la désélection d'un événement au niveau du formulaire n'a pas d'effet sur les propriétés d'événements des objets.
ATTENTION : Ce principe ne s'applique pas aux événements Sur chargement et Sur libération. Ces événements ne seront générés pour un objet que si les propriétés d'événement correspondantes ont été sélectionnées à la fois pour l'objet et pour le formulaire auquel il appartient. Si les propriétés sont sélectionnées pour l'objet uniquement, les événements ne seront pas générés ; ces deux événements doivent être sélectionnés au niveau du formulaire.
Le nombre d'objets impliqués par un événement dépend de la nature de l'événement. En particulier :
ATTENTION : Contrairement aux autres événements, pendant un événement Sur début glisser, la méthode appelée est exécutée dans le contexte du process de l'objet source du glisser-déposer, et non dans celui du process de l'objet de destination. Pour plus d'informations, reportez-vous à la section Présentation du Glisser-Déposer.
Pour chaque objet de la zone d’en-tête : |
|
Le tableau suivant résume, pour chaque type d'événement, l'appel des méthodes formulaire et objet :
Evénement | Méthode(s) objet | Méthode formulaire | Quel(s) objet(s) |
Sur chargement | Oui | Oui | Tous |
Sur libération | Oui | Oui | Tous |
Sur validation | Oui | Oui | Tous |
Sur clic | Oui (si cliquable ou saisissable) (*) | Oui | Seul l'objet impliqué |
Sur double clic | Oui (si cliquable ou saisissable) (*) | Oui | Seul l'objet impliqué |
Sur avant frappe clavier | Oui (si saisissable) (*) | Oui | Seul l'objet impliqué |
Sur après frappe clavier | Oui (si saisissable) (*) | Oui | Seul l'objet impliqué |
Sur après modification | Oui (si saisissable) (*) | Oui | Seul l'objet impliqué |
Sur gain focus | Oui (si tabulable) (*) | Oui | Seul l'objet impliqué |
Sur perte focus | Oui (si tabulable) (*) | Oui | Seul l'objet impliqué |
Sur activation | Jamais | Oui | Aucun |
Sur désactivation | Jamais | Oui | Aucun |
Sur appel extérieur | Jamais | Oui | Aucun |
Sur changement page | Jamais | Oui | Aucun |
Sur début glisser | Oui (si glissable) (**) | Oui | Seul l'objet impliqué |
Sur déposer | Oui (si déposable) (**) | Oui | Seul l'objet impliqué |
Sur glisser | Oui (si déposable) (**) | Jamais | Seul l'objet impliqué |
Sur début survol | Oui | Oui | Tous |
Sur survol | Oui | Oui | Tous |
Sur fin survol | Oui | Oui | Tous |
Sur menu sélectionné | Jamais | Oui | Aucun |
Sur bouton barre outils Mac | Jamais | Oui | Aucun |
Sur modif variable liée | Jamais | Oui | Aucun |
Sur données modifiées | Oui (si modifiable) (*) | Oui | Seul l'objet impliqué |
Sur appel zone du plug in | Oui | Oui | Seul l'objet impliqué |
Sur entête | Oui | Oui | Tous |
Sur impression corps | Oui | Oui | Tous |
Sur impression sous total | Oui | Oui | Tous |
Sur impression pied de page | Oui | Oui | Tous |
Sur case de fermeture | Jamais | Oui | Aucun |
Sur affichage corps | Oui | Oui | Tous |
Sur ouverture corps | Non sauf List box | Oui | Aucun sauf List box |
Sur fermeture corps | Non sauf List box | Oui | Aucun sauf List box |
Sur redimensionnement | Jamais | Oui | Aucun |
Sur nouvelle sélection | Oui (***) | Oui | Seul l'objet impliqué |
Sur chargement ligne | Jamais | Oui | Aucun |
Sur minuteur | Jamais | Oui | Aucun |
Sur défilement image | Oui | Oui | Seul l'objet impliqué |
Sur avant saisie | Oui (List box) | Jamais | Seul l'objet impliqué |
Sur déplacement colonne | Oui (List box) | Jamais | Seul l'objet impliqué |
Sur déplacement ligne | Oui (List box) | Jamais | Seul l'objet impliqué |
Sur redimensionnement colonne | Oui (List box) | Jamais | Seul l'objet impliqué |
Sur clic entête | Oui (List box) | Jamais | Seul l'objet impliqué |
Sur clic pied | Oui (List box) | Jamais | Seul l'objet impliqué |
Sur après tri | Oui (List box) | Jamais | Seul l'objet impliqué |
Sur clic long | Oui (Bouton 3D) | Oui | Seul l'objet impliqué |
Sur clic flèche | Oui (Bouton 3D) | Oui | Seul l'objet impliqué |
Sur déployer | Oui (Liste hiér. et List box) | Jamais | Seul l'objet impliqué |
Sur contracter | Oui (Liste hiér. et List box) | Jamais | Seul l'objet impliqué |
Sur action suppression | Oui (Liste hiér. et List box) | Jamais | Seul l'objet impliqué |
Sur chargement ressource URL | Oui (Zone Web) | Jamais | Seul l'objet impliqué |
Sur début chargement URL | Oui (Zone Web) | Jamais | Seul l'objet impliqué |
Sur erreur chargement URL | Oui (Zone Web) | Jamais | Seul l'objet impliqué |
Sur filtrage URL | Oui (Zone Web) | Jamais | Seul l'objet impliqué |
Sur fin chargement URL | Oui (Zone Web) | Jamais | Seul l'objet impliqué |
Sur ouverture lien externe | Oui (Zone Web) | Jamais | Seul l'objet impliqué |
Sur refus ouverture fenêtre | Oui (Zone Web) | Jamais | Seul l'objet impliqué |
(*) Référez-vous ci-dessous au paragraphe "Evénements, objets et propriétés" pour plus d'informations.
(**) Référez-vous à la section Présentation du Glisser-Déposer pour plus d'informations.
(***) Seuls les objets de type List box, Liste hiérarchique et Sous-formulaire prennent en charge cet événement.
IMPORTANT : Gardez constamment à l'esprit que, pour chaque événement, la méthode d'un formulaire ou d'un objet est appelée si l'événement correspondant a été sélectionné pour le formulaire ou l'objet. L'avantage de désactiver des événements en mode Développement (en utilisant la Liste des propriétés de l'éditeur de formulaires) est que vous pouvez réduire de manière très importante le nombre d'appels aux méthodes et donc optimiser la vitesse d'exécution des formulaires.
Une méthode objet est appelée si l'événement peut réellement se produire pour l'objet en fonction de sa nature et de ses propriétés. Ce paragraphe détaille les événements à utiliser pour gérer les différents types d'objets.
A noter que la Liste des propriétés de l'éditeur de formulaires n'affiche que les événements compatibles avec l'objet sélectionné ou le formulaire.
Les objets cliquables sont gérés principalement avec la souris. Ces objets sont les suivants :
Lorsque l’événement Sur clic ou Sur double clic est sélectionné pour un de ces objets, vous pouvez détecter et gérer les clics sur l'objet à l'aide de la commande Evenement formulaire qui retourne Sur clic ou Sur double clic selon le cas.
Si les deux événements sont sélectionnés pour un même objet, les événements Sur clic puis Sur double clic seront générés en cas de double-clic sur l’objet.
Note : A compter de 4D v14, les champs et variables saisissables contenant du texte (type texte, date, heure, numérique) génèrent également les événements Sur clic et Sur double clic.
Pour tous les objets cliquables, l'événement Sur clic se produit une fois que le bouton de la souris est relâché. Il y a cependant des exceptions :
Note : Quelques objets peuvent être activés par le clavier. Une case à cocher, par exemple, une fois qu'elle a le focus, peut être sélectionnée à l'aide de la barre d'espace. Dans ce cas, l'événement Sur clic est quand même généré.
ATTENTION : Les combo-boxes ne sont pas considérées comme des objets cliquables. Une combo-box doit être perçue comme une zone de texte saisissable dont la liste déroulante fournit les valeurs par défaut. Par conséquent, vous gérez la saisie des données dans une combo-box à l'aide des événements Sur avant frappe clavier, Sur après frappe clavier et Sur données modifiées.
Note : A compter de 4D v13, les objets de type pop up/liste déroulante et menu déroulant hiérarchique peuvent générer l'événement Sur données modifiées. Ce principe vous permet de détecter l'activation de l'objet avec sélection d'une valeur différente de la valeur courante.
Les objets saississables par clavier sont des objets dans lesquels vous saisissez des données par le clavier et pour lesquels vous pouvez filtrer les données au plus bas niveau en détectant les événements Sur après modification, Sur avant frappe clavier, Sur après frappe clavier et Sur nouvelle sélection.
Les objets et types de données saisissables sont les suivants :
Note : A compter de 4D v14, les champs et variables saisissables contenant du texte (type texte, date, heure, numérique) génèrent également les événements Sur clic et Sur double clic.
Note : Bien qu'objets “saisissables”, les listes hiérarchiques ne gèrent pas les événements formulaire Sur après modification, Sur avant frappe clavier et Sur après frappe clavier (voir aussi le paragraphe “Listes hiérarchiques” ci-dessous).
Note : L'événement Sur après frappe clavier peut généralement être avantageusement remplacé par l'événement Sur après modification (cf. ci-dessous).
Une fois que les événements Sur avant frappe clavier et Sur après frappe clavier ont été sélectionnés pour un objet, vous pouvez détecter et gérer la saisie par le clavier dans l'objet à l'aide de la commande Evenement formulaire qui va retourner Sur avant frappe clavier puis Sur après frappe clavier (pour plus d'informations, reportez-vous à la description de la commande Lire texte edite). Ces événements sont également activés par les commandes du langage simulant une action utilisateur, telles que GENERER FRAPPE CLAVIER.
A noter que les modifications des utilisateurs non effectuées via le clavier (coller, glisser-déposer, etc.) ne sont pas prises en compte. Pour traiter ces événements, vous devez utiliser Sur après modification.
Note : Les événements Sur avant frappe clavier et Sur après frappe clavier ne sont pas générés lors de l'utilisation d'une méthode d'entrée. Une méthode d'entrée (ou IME, Input Method Editor) est un programme ou un composant système permettant la saisie de caractères complexes ou de symboles (par exemple japonais ou chinois) à l'aide d'un clavier occidental.
Les objets modifiables sont des objets ayant une source de données, dont la valeur peut être modifiée à l'aide de la souris ou du clavier, mais qui ne sont pas gérés par l'événement Sur clic. Ces objets sont les suivants :
Ces objets reçoivent les événements Sur données modifiées. Lorsque la propriété d'événement Sur données modifiées est sélectionnée pour un de ces objets, vous pouvez détecter et gérer la modification de la valeur de la source de données à l'aide de la commande Evenement formulaire qui retourne Sur données modifiées. L'événement est généré dès que la variable associée à l'objet est mise à jour en interne par 4D (c'est-à-dire, en général, lorsque la zone de saisie de l'objet perd le focus).
Les objets tabulables sont ceux qui peuvent recevoir le focus lorsque vous utilisez la touche Tab et/ou si vous cliquez dessus. L'objet qui a le focus est celui qui reçoit les caractères saisis via le clavier et qui ne sont pas les modificateurs d'une commande de menu ou d'un objet tel qu'un bouton.
TOUS les objets sont tabulables SAUF ceux listés ci-dessous :
Lorsque les événements Sur gain focus et/ou Sur perte focus sont sélectionnés pour un objet tabulable, vous pouvez détecter et gérer la modification du focus à l'aide de la commande Evenement formulaire qui retournera Sur gain focus ou Sur perte focus en fonction de l'événement.
Les boutons 3D autorisent la mise en place d’interfaces graphiques avancées (pour une description des boutons 3D, reportez-vous au manuel Mode Développement). Outre les événements génériques, deux événements spécifiques permettent de gérer de ces boutons :
Les styles de boutons 3D, boutons radio 3D et cases à cocher 3D acceptant la propriété “Avec pop up menu” sont : Aucun, Bouton barre outils, Bevel, Bevel arrondi et Office XP.
Plusieurs événements formulaires permettent de prendre en charge les spécificités des list box :
(Nouveauté v14) Deux événements génériques sont également utilisables dans le contexte d'une list box de type "sélection" :
Outre les événements génériques, plusieurs événements formulaires spécifiques permettent de prendre en charge les actions utilisateurs effectuées sur les listes hiérarchiques :
Ces événements ne sont pas mutuellement exclusifs. Ils peuvent être générés les uns après les autres pour une liste hiérarchique :
- Suite à la frappe d’une touche clavier (dans l’ordre) :
Sur données modifiées | Un élément était en édition | |
Sur déployer / Sur contracter | Ouverture/fermeture de sous-liste à l’aide des touches fléchées -> ou <- | |
Sur nouvelle sélection | Sélection d’un nouvel élément | |
Sur clic | Activation de la liste par le clavier |
Sur données modifiées | Un élément était en édition | |
Sur déployer / Sur contracter | Ouverture/fermeture de sous-liste via un clic sur l’icône de déploiement/contraction | |
ou bien | ||
Double-clic sur une sous-liste non éditable | ||
Sur nouvelle sélection | Sélection d’un nouvel élément | |
Sur clic / Sur double clic | Activation de la liste par un clic ou un double-clic |
(Nouveauté 4D v13.2) L'événement formulaire Sur défilement image est généré dès que l'utilisateur fait défiler une image à l'intérieur de la zone (variable ou champ) qui la contient. Il est possible de faire défiler le contenu d'une zone image lorsque la taille de la zone est inférieure à son contenu et que le format d'affichage est "tronqué (non centré)". Pour plus d'informations sur ce point, reportez-vous au paragraphe Formats image.
L'événement est généré lorsque le défilement a pour origine une action utilisateur, quelle que soit cette action : utilisation des curseurs ou des barres de défilement, de la molette de la souris ou des touches de défilement du clavier (pour plus d'informations sur les commandes de défilement accessibles au clavier, reportez-vous à la section Barres de défilement).
Note : L'événement n'est pas généré lorsque l'image défile à la suite de l'exécution de la commande OBJET FIXER DEFILEMENT.
Reportez-vous à l'exemple 15.
Un objet conteneur de sous-formulaire (objet inclus dans le formulaire parent, contenant une instance de sous-formulaire) prend en charge les événements suivants :
Note : Il est possible de définir tout type d’événement personnalisé pouvant être généré dans un sous-formulaire via la commande APPELER CONTENEUR SOUS FORMULAIRE. Cette commande permet d’appeler la méthode de l’objet conteneur et de lui passer un code d’événement.
Note : Les événements Sur clic et Sur double-clic générés dans le sous-formulaire sont reçus en premier lieu par la méthode formulaire du sous-formulaire puis par la méthode formulaire du formulaire hôte.
Sept événements formulaires spécifiques sont disponibles pour les zones Web :
L'exemple suivant montre l'utilisation de l'événement Sur validation pour affecter automatiquement la date lorsque l'enregistrement est modifié :
` Méthode d'un formulaire
Au cas ou
` ...
:(Evenement formulaire=Sur validation)
[LaTable]Date de modification:=Date du jour
Fin de cas
Dans l'exemple suivant, la gestion complète d'un menu déroulant (initialisation, clics et relâchement de l'objet) est placée dans la méthode de l'objet :
` Méthode objet du menu déroulant taTaille
Au cas ou
:(Evenement formulaire=Sur chargement)
TABLEAU ALPHA(31;taTaille;3)
taTaille{1}:="Petit"
taTaille{2}:="Moyen"
taTaille{3}:="Grand"
:(Evenement formulaire=Sur clic)
Si(taTaille#0)
ALERTE("Vous avez choisi la taille "+taTaille{taTaille}+".")
Fin de si
:(Evenement formulaire=Sur libération)
EFFACER VARIABLE(taTaille)
Fin de cas
L'exemple suivant montre comment, dans une méthode objet, gérer et valider l'opération de glisser-déposer à partir d'un champ qui n'accepte que des images.
` Méthode objet du champ Image [LaTable]uneImage
Au cas ou
:(Evenement formulaire=Sur glisser)
` On est en train de glisser-déposer un objet et la souris est au-dessus d'un champ
` Obtenir les informations sur l'objet source
PROPRIETES GLISSER DEPOSER($vpObjetSource;$vlElémentSource;$lProcessSource)
` Notez que nous n'avons pas besoin de tester le numéro de process source
` pour la méthode objet exécutée parce qu'elle est dans le même process
$vlTypeDonnées:=Type($vpSrcObject->)
` Les données source sont-elles une image (champ, variable ou tableau) ?
Si(($vlTypeDonnées=Est une image)|($vlTypeDonnées=Est un tableau image))
` Accepter l'opération
$0:=0
Sinon
` Sinon, refuser l'opération
$0:=-1
Fin de si
:(Evenement formulaire=Sur déposer)
` Les données source ont été déposées sur l'objet, donc nous avons besoin de les copier dans l'objet.
` Obtenir les informations sur l'objet source
PROPRIETES GLISSER DEPOSER($vpObjetSource;$vlElémentSource;$lProcessSource)
$vlTypeDonnées:=Type($vpSrcObject->)
Au cas ou
` L'objet source est un champ ou une variable de type Image
:($vlTypeDonnées=Est une image)
` Est-ce que l'objet source est dans le même process (dans la même fenêtre et le même
formulaire)?
Si($lProcessSource=Numero du process courant)
` Copier la valeur source
[LaTable]uneImage:=$vpObjetSource->
Sinon
` Sinon, est-ce que l'objet source est une variable ?
Si(Est une variable($vpObjetSource))
` Obtenir la valeur du process source
LIRE VARIABLE PROCESS($lProcessSource;$vpObjetSource->;$vgImageGlissée)
[LaTable]uneImage:=$vgImageGlissée
Sinon
` Sinon, utiliser APPELER PROCESS pour obtenir la valeur du champ du process source
Fin de si
Fin de si
` L'objet source est un tableau de type Image
:($vlTypeDonnées=Est un tableau image)
` Est-ce que l'objet source est dans le même process (dans la même fenêtre et le même
formulaire)?
Si($lProcessSource=Numero du process courant)
` Copier la valeur source
[LaTable]uneImage:=$vpSrcObject->{$vlElémentSource}
Sinon
` Sinon, obtenir la valeur du process source
LIRE VARIABLE PROCESS($lProcessSource;$vpObjetSource
->{$vlElémentSource};$vgImageGlissée)
[LaTable]uneImage:=$vgImageGlissée
Fin de si
Fin de cas
Fin de cas
Note : Pour d'autres exemples sur la gestion des événements Sur glisser et Sur déposer, référez-vous aux exemples de la commande PROPRIETES GLISSER DEPOSER.
L'exemple suivant est une méthode formulaire générique. Elle fait apparaître chacun des événements qui peuvent survenir lorsqu'un formulaire est utilisé comme formulaire sortie :
` Méthode formulaire d'un formulaire sortie
$vpFormTable:=Table du formulaire courant
Au cas ou
` ...
:(Evenement formulaire=Sur entête)
` La zone en-tête va être imprimée ou affichée
Au cas ou
:(Avant selection($vpFormTable->))
` Le code pour la première rupture d'en-tête doit être placé ici
:(Niveau=1)
` Le code pour la rupture d'en-tête niveau 1 doit être placé ici
:(Niveau=2)
` Le code pour la rupture d'en-tête niveau 2 doit être placé ici
` ...
Fin de cas
:(Evenement formulaire=Sur impression corps)
` Un enregistrement va être imprimé
` Le code pour chaque enregistrement doit être placé ici
:(Evenement formulaire=Sur impression sous total)
` Une rupture va être imprimée
Au cas ou
:(Niveau=0)
` Le code pour la rupture 0 doit être placé ici
:(Niveau=1)
` Le code pour la rupture 1 doit être placé ici
` ...
Fin de cas
:(Evenement formulaire=Sur impression pied de page)
Si(Fin de selection($vpFormTable->))
` Le code pour le dernier pied de page doit être placé ici
Sinon
` Le code pour le pied de page doit être placé ici
Fin de si
Fin de cas
L'exemple suivant montre une méthode formulaire générique qui gère les événements pouvant survenir dans un formulaire sortie quand il s'affiche à l'aide de VISUALISER SELECTION ou MODIFIER SELECTION. Dans un but informatif, elle affiche l'événement dans la barre de titre de la fenêtre.
` Une méthode formulaire exemple
Au cas ou
:(Evenement formulaire=Sur chargement)
$vaEvénement:="Le formulaire va être affiché"
:(Evenement formulaire=Sur libération)
$vaEvénement:="Le formulaire sortie vient de se fermer et va disparaître de l'écran"
:(Evenement formulaire=Sur affichage corps)
$vaEvénement:="Affichage de l'enregistrement n°"+Chaine(Numero dans selection([LaTable]))
:(Evenement formulaire=Sur menu sélectionné)
$vaEvénement:="Une commande de menu a été sélectionnée"
:(Evenement formulaire=Sur entête)
$vaEvénement:="L'en-tête va être imprimé ou affiché"
:(Evenement formulaire=Sur clic)
$vaEvénement:="On a cliqué sur un enregistrement"
:(Evenement formulaire=Sur double clic)
$vaEvénement:="On a double-cliqué sur un enregistrement"
:(Evenement formulaire=Sur ouverture corps)
$vaEvénement:="On a double-cliqué sur l'enregistrement n°"+Chaine(Numero dans selection([LaTable]))
:(Evenement formulaire=Sur fermeture corps)
$vaEvénement:="Retour au formulaire sortie"
:(Evenement formulaire=Sur activation)
$vaEvénement:="La fenêtre du formulaire passe au premier plan"
:(Evenement formulaire=Sur désactivation)
$vaEvénement:="La fenêtre du formulaire n'est plus au premier plan"
:(Evenement formulaire=Sur menu sélectionné)
$vaEvénement:="Une ligne de menu a été sélectionnée"
:(Evenement formulaire=Sur appel extérieur)
$vaEvénement:="Un appel extérieur a été reçu"
Sinon
$vaEvénement:="Que se passe-t-il ? L'événement n°"+Chaine(Evenement formulaire)
Fin de cas
CHANGER TITRE FENETRE($vaEvénement)
Pour des exemples de gestion des événements Sur avant frappe clavier et Sur après frappe clavier, référez-vous aux exemples des commandes Lire texte edite, Frappe clavier et FILTRER FRAPPE CLAVIER.
L'exemple suivant montre comment traiter de la même manière les clics et double-clics dans une zone de défilement :
` Méthode objet pour la zone de défilement taChoix
Au cas ou
:(Evenement formulaire=Sur chargement)
TABLEAU ALPHA(...;taChoix;...)
` ...
taChoix:=0
:((Evenement formulaire=Sur clic)|(Evenement formulaire=Sur double clic))
Si(taChoix#0)
` On a cliqué sur un élément, faire quelque chose
` ...
Fin de si
` ...
Fin de cas
L'exemple suivant montre comment traiter les clics et double-clics de manière différente (notez l'utilisation de l'élément zéro pour conserver la valeur de l'élément sélectionné) :
` Méthode objet pour la zone de défilement taChoix
Au cas ou
:(Evenement formulaire=Sur chargement)
TABLEAU ALPHA(...;taChoix;...)
` ...
taChoix:=0
taChoix{0}:="0"
:(Evenement formulaire=Sur clic)
Si(taChoix#0)
Si(taChoix#Num(taChoix))
` On a cliqué sur un élément, faire quelque chose
` ...
` Sauvegarder l'élément nouvellement sélectionné pour la prochaine fois
taChoix{0}:=Chaine(taChoix)
Fin de si
Sinon
taChoix:=Num(taChoix{0})
Fin de si
:(Evenement formulaire=Sur double clic souris)
Si(taChoix#0)
` On a double-cliqué sur un élément, faire quelque chose
Fin de si
` ...
Fin de cas
L'exemple suivant montre comment maintenir une zone contenant du texte à partir d'une méthode formulaire à l'aide des événements Sur gain focus et Sur perte focus :
` Méthode formulaire [Contacts];"Entrée"
Au cas ou
:(Evenement formulaire=Sur chargement)
C_TEXTE(vtZoneEtat)
vtZoneEtat:=""
:(Evenement formulaire=Sur gain focus)
RESOUDRE POINTEUR(Objet focus;$vsNomVar;$vlNumTable;$vlNumChamp)
Si(($vlNumTable#0)&($vlNumChamp#0))
Au cas ou
:($vlNumChamp=1) ` Champ nom
vtZoneEtat:="Saisissez le nom du contact, il sera automatiquement mis en majuscules."
` ...
:($vlNumChamp=10) ` Champ code postal
vtZoneEtat:="Saisissez un code postal, il sera automatiquement vérifié et validé."
` ...
Fin de cas
Fin de si
:(Evenement formulaire=Sur perte focus)
vtZoneEtat:=""
` ...
Fin de cas
L'exemple suivant montre comment traiter l'événement de fermeture de fenêtre avec un formulaire utilisé pour l'entrée des données :
` Méthode pour un formulaire entrée
$vpFormulaireTable:=Table du formulaire courant
Au cas ou
` ...
:(Evenement formulaire=Sur case de fermeture)
Si(Enregistrement modifie($vpFormulaireTable->))
CONFIRMER("Cet enregistrement a été modifié. Voulez-vous sauvegarder les modifications ?")
Si(OK=1)
VALIDER
Sinon
NE PAS VALIDER
Fin de si
Sinon
NE PAS VALIDER
Fin de si
` ...
Fin de cas
L'exemple suivant montre comment mettre en majuscules un champ Texte ou Alphanumérique chaque fois que la valeur est modifiée :
` Méthode objet pour [Contacts]Prénom
Au cas ou
` ...
:(Evenement formulaire=Sur données modifiées)
[Contacts]Prénom:=Majusc(Sous chaine([Contacts]Prénom;1;1))+Minusc(Sous chaine([Contacts]Prénom;2))
` ...
Fin de cas
L'exemple suivant montre comment mettre en majuscules un champ Texte ou Alphanumérique chaque fois que la valeur est modifiée :
` Méthode objet pour [Contacts]Prénom
Au cas ou
` ...
:(Evenement formulaire=Sur données modifiées)
[Contacts]Prénom:=Majusc(Sous chaine([Contacts]Prénom;1;1))+Minusc(Sous chaine([Contacts]Prénom;2))
` ...
Fin de cas
L'exemple suivant propose une manière de gérer une action de suppression dans une liste hiérarchique :
... //méthode de la liste hiérarchique
:($Event=Sur action suppression)
TABLEAU ENTIER LONG($itemsArray;0)
$Ref:=Elements selectionnes(<>HL;$itemsArray;*)
$n:=Taille tableau($itemsArray)
Au cas ou
:($n=0)
ALERTE("Pas d’élément sélectionné")
OK:=0
:($n=1)
CONFIRMER("Voulez-vous supprimer cet élément ?")
:($n>1)
CONFIRMER("Voulez-vous supprimer ces éléments ?")
Fin de cas
Si(OK=1)
Boucle($i;1;$n)
SUPPRIMER DANS LISTE(<>HL;$itemsArray{$i};*)
Fin de boucle
Fin de si
Dans cet exemple, l'événement formulaire Sur défilement image permet de synchroniser l'affichage de deux images dans un formulaire. Le code suivant est ajouté dans la méthode du formulaire :
Au cas ou
:(Evenement formulaire=Sur défilement image)
// on relève la position de l'image de gauche
OBJET LIRE DEFILEMENT(*;"satellite";vPos;hPos)
// on l'applique à l'image de droite
OBJET FIXER DEFILEMENT(*;"plan";vPos;hPos;*)
Fin de cas
Résultat :
Produit : 4D
Thème : Evénements formulaire
Numéro :
388
Nom intl. : Form event
Modifié : 4D v11 SQL Release 2
Modifié : 4D v12
Modifié : 4D v13
Modifié : 4D v13.2
Modifié : 4D v14
APPELER CONTENEUR SOUS FORMULAIRE
APPELER PROCESS
FILTRER FRAPPE CLAVIER
FIXER MINUTEUR
Frappe clavier
Lire texte edite
PROPRIETES GLISSER DEPOSER
Table du formulaire courant
4D - Langage ( 4D v14 R3)
4D - Langage ( 4D v14 R2)
4D - Langage ( 4D v14.3)
4D - Langage ( 4D v14 R4)
Hérité de : Evenement formulaire ( 4D v13.5)