Nouveaux événements formulaires en 4D 2004
Date de publication : Janvier 2006
Par
Jean-Yves FOCK-HOON (4D Inc.)
Cette note technique illustre les nouveaux événements formulaires ajoutés en 4D 2004 pour les boutons 3D,
Sur clic long, Sur clic flèche ainsi que les événements Sur début survol, Sur survol, Sur fin survol.
Introduction
Les nouveaux événements formulaires
Evenements dans l'exemple 1
Les événements de l'exemple 2
Conclusion
Base exemple
Introduction
Cette note technique illustre les nouveaux événements formulaires ajoutés en 4D 2004 pour les boutons 3D.
Cette note reprend un interface et une technique utilisée par Gérard Czwiklinski
dans la note
4D-200208-25-FR "Une carte au menu".
Les nouveaux événements formulaires
Avec 4D 2004, les objets comme les boutons 3D et les boutons image ont été améliorés.
Ainsi de nouveaux événements ont été implémentés pour tirer parti de ces nouvelles fonctionnalités.
Cette note technique couvre les événements suivants :
· sur début survol
· sur survol
· sur fin survol
· sur clic long
· sur clic flèche
Dans les versions précédentes, vous deviez écrire beaucoup de code pour obtenir ce que vous
souhaitiez et peut-être même deviez-vous utiliser des commandes comme APPELER SUR EVENEMENT
ou utiliser l'événement SUR MINUTEUR.
Avec l'apparition des nouveaux événements en version 2004 vous allez pouvoir mieux maîtriser les survols.
Ces nouveaux événements sont générés pour les objets visibles dans la fenêtre de premier plan.
Si vous manipulez plusieurs process, l'événément sera généré pour le process de premier plan
seulement, excepté si les autres process sont aussi des palettes flottantes. Par exemple, si
vous avez une palette flottante avec un objet qui utilise l'événement Sur survol, et une fenêtre
principale, une fenêtre normale, avec le même objet, déplacer la souris sur un des objets lancera
l'événement pour chaque process. Si les deux process sont des fenêtres standards, seulement le process
de premier plan recevra l'événément.
Si plusieurs objets l'un sur l'autre lance le même événement, l'événement sera seulement retourné
par l'objet de premier plan.
Evenements dans l'exemple 1
Notre base exemple affiche deux dialogues avec une carte de France.
En utilisant les nouveaux événements, nous allons améliorer l'interface.
Notre base est construite pour être utilisée en Menus Créés : elle utilise
un Menu Démonstration avec deux lignes de Menus, Démo 1 et Démo 2.
En sélectionnant la ligne de Menu Démo 1, on affiche une carte de France. Lorsque vous
déplacez le pointeur de la souris au-dessus de la carte, vous verrez que quelques variables
s'affichent. Quand le pointeur est au-dessus d'un département, ces variables affichent le nom
du département et le nom de sa région. Si le pointeur se situe en dehors de la carte, seulement
les coordonnées du curseur sont affichés.
Voyons comment cela fonctionne...
La ligne de Menu Démo 1 exécute la Méthode projet AfficheCarte1.
Cette méthode exécute la Méthode projet Creer_Masque, qui construit
le masque de la carte, de façon à pouvoir localiser le pointeur de la souris sur un département.
La méthode principale appelle alors un dialogue avec le formulaire [Interface]DisplayMap1.
Ce formulaire contient un bouton image, vMap, avec la Méthode objet suivante :
| code 4D - Méthode objet du bouton vMap |
vMap:=0
Au cas ou
: (Evenement formulaire=Sur survol ) | (Evenement formulaire=Sur clic )
POSITION SOURIS($x;$y;$bt)
`$x:=$x-20
`$y:=$y-20
`looking for state #
$yMax:=Taille tableau(Pixel_departement)
$xMax:=Taille tableau(Pixel_departement{$ymax})
Si (($x<=$xMax) & ($y<=$yMax) & ($x>0) & ($y>0))
$Region:=Pixel_departement{$y}{$x}
Sinon
$Region:=255
Fin de si
Si ($Region#255)
CHERCHER([Departements];[Departements]NumeroDepartement=$Region)
vdepartement:=[Departements]Nom
vNrDepart:=[Departements]NumeroDepartement
CHARGER SUR LIEN([Departements])
vRegion:=[Régions]Région
Sinon
vdepartement:=""
vNrDepart:=""
vRegion:=""
Fin de si
vXYMouse:="X: "+Chaine($x)+"-"+"Y: "+Chaine($y)
: (Evenement formulaire=Sur début survol )
CHOIX VISIBLE(*;"yv@";Vrai)
: (Evenement formulaire=Sur fin survol )
CHOIX VISIBLE(*;"yv@";Faux)
Fin de cas |
Comme vous le constatez, le Au cas ou gère nos trois premiers événements formulaires :
• L'événement Sur debut survol intervient lorsque le pointeur de la souris pénêtre
dans la zone définie pour un objet. La Méthode objet est appelée une seule fois.
Dans notre exemple, l'information sur les départements, la capitale administrative
et les coordonnées de la souris sont invisibles par défaut. Quand le pointeur de la
souris penètre dans une zone spécifique, nous rendons ces informations visibles.
• L'événement Sur survol intervient chaque fois que la souris se déplace au moins d'un
pixel à l'intérieur de la zone. La Méthode objet est appelée à chaque fois que c'est
possible. Par exemple, si l'exécution de la méthode qui gère l'événement est très rapide,
un certain nombre d'événements sera généré en déplaçant la souris. Ainsi, quand la
méthode prend plus de temps à être exécutée, moins d'événements sont générés.
 |
Gardez à l'esprit que l'exécution des événements Sur minuteur ou Sur appel extérieur
peut interférer avec cet événement puisque'une seule méthode peut être exécutée à la
fois dans votre process courant. Dans l'exemple, nous retrouvons les coordonnées de la
souris. Si les nouvelles coordonnées sont valides, vous pouvez vérifier dans le tableau
défini dans la Méthode Créer_Masque pour voir si la souris est en haut d'un département.
Le tableau retournera l'ID du département ou la valeur 255. En fonction de cette valeur,
nous pouvons chercher le département et la région et renseigner les variables qui sont
désormais visibles.
|
• L'événement Sur fin survol intervient lorsque la souris quitte la zone graphique définie
par un objet. La Méthode objet est appelée une fois. Dans notre exemple, nous rendons à
nouveau nos informations invisibles à nouveau lorsque le curseur n'est plus sur notre
zone graphique.
Les événements de l'exemple 2
Voyons maintenant l'exemple 2. Un dialogue similaire apparaît. Mais les fonctionnalités
de ce dialogue sont complétement différentes de l'exemple 1. Nous ne cachons plus les
informations. Lorsque nous déplaçons la souris au-dessus de la carte, nous pouvons voir
que les informations sont toujours à jour mais le nom de la région à une apparence différente.
Le nom de la région est maintenant un bouton image 3D mais avec aucune image, seulement
un titre. On peut voir une flèche à la droite du bouton. Ceci affiche un pop-up menu.
Dans les anciennes versions vous pouviez avoir à dessiner un second objet, comme un autre
bouton image avec une image représentant une flèche et créer le script qui affichera le
pop-up menu. Il y a maintenant de nouvelles fonctionnalités avec les boutons 3D : vous
pouvez automatiquement ajouter la flèche dans l'objet bouton. Nous verrons plus tard comment
cela fonctionne. Un clic sur la flèche affiche le pop-up menu. Un clic sur le bouton lui-même
affiche les informations de la région et un clic long sur lebouton affiche le drapeau.
La carte elle-même est un bouton image 3D qui gère les événements Sur clic et Sur clic long.
Cliquez n'importe où sur la carte et un nouveau dialogue s'affichera avec toutes les
informations sur cette région. Cliquez sur n'importe quelle région et maintenez le bouton
et l'événement Sur clic long est géré. Un autre dialogue qui contient le drapeau de la
région est alors affiché.
Ces deux dialogues peuvent être fermés par un simple clic sur la fenêtre.
Voyons comment cela fonctionne...
La méthode utilisée est AfficheCarte2.
Cette méthode est
identique à la première mais elle utilise un formulaire différent, [Interface]AfficheCarte2.
Voici la méthode objet de cette carte :
| code 4D - Méthode objet de la carte |
Au cas ou
: (Evenement formulaire=Sur survol ) | (Evenement formulaire=Sur clic )
| (Evenement formulaire=Sur clic long )
POSITION SOURIS($x;$y;$bt)
$yMax:=Taille tableau(Pixel_departement)
$xMax:=Taille tableau(Pixel_departement{$ymax})
Si (($x<=$xMax) & ($y<=$yMax) & ($x>0) & ($y>0))
$Departement:=Pixel_departement{$y}{$x}
Sinon
$Departement:=255
Fin de si
Si ($Departement#255)
CHERCHER([Departements];[Departements]NumeroDepartement=$Departement)
CHARGER SUR LIEN([Departements])
vRegion:=[Régions]Région
vCapitale:=[Régions]Capitale
vRegion_ID:=[Régions]NumeroRegion
TITRE BOUTON(bRegion;vRegion)
Au cas ou
: (Evenement formulaire=Sur clic )
$ref:=Nouveau process("M_afficheRegion";?ProcessStack;
"Edit_"+vRegion;vRegion_ID;*)
PASSER AU PREMIER PLAN($ref)
: (Evenement formulaire=Sur clic long )
$ref:=Nouveau process("M_afficheDrapeau";?ProcessStack;
"Flag_"+vRegion;vRegion_ID;*)
PASSER AU PREMIER PLAN($ref)
Fin de cas
Fin de si
vXYMouse:="X: "+Chaine($x)+"-"+"Y: "+Chaine($y)
Fin de cas |
Comme nous pouvons le voir, la Méthode objet est presque la même que celle utilisée dans le premier exemple.
L'événement Sur clic long est un événement généré lorsque un clic long a été détecté.
Le temps utilisé par 4D pour générer cet événement est le temps défini dans votre OS
pour détecter le double clic. C'est le temps qui permet au système de faire la différence
entre deux simples clics et un double clic. Dans notre exemple, nous lançons un nouveau
process qui affiche le drapeau grâce à la méthode projet M_afficheDrapeau.
L'événement Sur clic long est très différent de l'événement Sur clic. Sur notre formulaire,
un simple clic lance un autre process basé sur la Méthode M_afficheRegion.
L'objet qui affiche le nom de la région est un bouton image 3D nommé bRegion.
Voici la Méthode objet de ce bouton :
| code 4D - Méthode objet du bouton bRegion |
Au cas ou
: (Evenement formulaire=Sur clic )
Si (vRegion#"")
$ref:=Nouveau process("M_afficheRegion";<>ProcessStack;"Edit_"+vRegion;vRegion_ID;*)
Fin de si
: (Evenement formulaire=Sur clic long )
Si (vRegion#"")
$ref:=Nouveau process("M_afficheDrapeau";<>ProcessStack;"Flag_"+vRegion;vRegion_ID;*)
Fin de si
: (Evenement formulaire=Sur clic flèche )
$RegionID:=Pop up menu(<>PopupRegions)
Si ($RegionID>0)
CHERCHER([Régions];[Régions]NumeroRegion=$RegionID)
TITRE BOUTON(bRegion;[Régions]Région)
vCapitale:=[Régions]Capitale
Fin de si
Fin de cas |
L'événement Sur clic flèche est généré aussitôt que l'utilisateur clique sur la flèche.
C'est ici que vous pouvez exécuter votre code, comme construire un pop-up menu et l'afficher.
Une fois que l'utilisateur a sélectionné un item, nous cherchons les informations sur la région
et les affichons.
Un clic sur le nom de la région créera un nouveau process qui affichera les données,
tandis que le clic long affichera le drapeau. Ceci illustre la différence de comportement
entre le clic long et le clic.
 |
A noter :
Si sous Windows, les données concernant les régions et départements ne s'affichent pas,
vérifiez la version de Quicktime installée. Il devrait suffire de faire une mise à jour pour
que les niveaux de gris de l'image "Masque" permettent le fonctionnement.
|
Conclusion
Les nouveaux événements sont très pratiques si nous voulons peaufiner notre interface.
Avec l'événement Sur clic long, vous n'avez plus besoin d'utiliser un code complexe pour
l'exécution de différentes tâches. Avec les événements Sur survol, Sur début survol et
Sur fin survol, vous suivez très facilement les déplacements
Base exemple
__________________________________________________
Copyright © 1985-2008 4D SA - Tous droits réservés
Tous les efforts ont été faits pour que le contenu de cette note technique présente le maximum de fiabilité possible.
Néanmoins, les différents éléments composant cette note technique, et le cas échéant, le code, sont fournis sans garantie d'aucune sorte.
L'auteur et 4D S.A. déclinent donc toute responsabilité quant à l'utilisation qui pourrait être faite de ces éléments, tant à l'égard de leurs
utilisateurs que des tiers.
Les informations contenues dans ce document peuvent faire l'objet de modifications sans préavis et ne sauraient en aucune manière engager
4D SA. La fourniture du logiciel décrit dans ce document est régie par un octroi de licence dont les termes sont précisés par ailleurs dans la
licence électronique figurant sur le support du Logiciel et de la Documentation afférente. Le logiciel et sa documentation ne peuvent être
utilisés, copiés ou reproduits sur quelque support que ce soit et de quelque manière que ce soit, que conformément aux termes de cette
licence.
Aucune partie de ce document ne peut être reproduite ou recopiée de quelque manière que ce soit, électronique ou mécanique, y compris par
photocopie, enregistrement, archivage ou tout autre procédé de stockage, de traitement et de récupération d'informations, pour d'autres buts
que l'usage personnel de l'acheteur, et ce exclusivement aux conditions contractuelles, sans la permission explicite de 4D SA.
4D, 4D Calc, 4D Draw, 4D Write, 4D Insider, 4ème Dimension ®, 4D Server, 4D Compiler ainsi que les logos 4e Dimension, sont des marques
enregistrées de 4D SA.
Windows,Windows NT,Win 32s et Microsoft sont des marques enregistrées de Microsoft Corporation.
Apple, Macintosh, Power Macintosh, LaserWriter, ImageWriter, QuickTime sont des marques enregistrées ou des noms commerciaux de Apple Computer,Inc.
Mac2Win Software Copyright © 1990-2002 est un produit de Altura Software,Inc.
4D Write contient des éléments de "MacLink Plus file translation", un produit de DataViz, Inc,55 Corporate drive,Trumbull,CT,USA.
XTND Copyright 1992-2002 © 4D SA. Tous droits réservés.
XTND Technology Copyright 1989-2002 © Claris Corporation.. Tous droits réservés ACROBAT © Copyright 1987-2002, Secret
Commercial Adobe Systems Inc.Tous droits réservés. ACROBAT est une marque enregistrée d'Adobe Systems Inc.
Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires
respectifs.
__________________________________________________


Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur.
La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.