4D v14

Script de la vidéo

Accueil

 
4D v14
Script de la vidéo

Script de la vidéo  


 

 

Bonjour,

dans cette vidéo nous allons apprendre le fonctionnement des événements et leur programmation.

Distinguons dans un premier temps :

  • les événements "formulaires" qui figurent dans les propriétés du formulaire
  • des événements "moteur" qui sont définis dans les propriétés d'une table, les événement moteurs étant associés aux triggers c'est à dire à la programmation qui va être exécutée lorsque les événements surviendront.

Les événements formulaires ne se déclenchent que lorsqu'un formulaire est utilisé (à l’écran ou à l’impression), donc lorsque l’interface est manipulée par un utilisateur (clic, glisser-déposer, sélection d’un menu, frappe clavier...).

Les événements moteur ne concernent que les 3 actions effectuées sur les données :

  • création
  • modification
  • suppression.

Ces 3 événements sont interceptés par le moteur de données. Cette remarque est importante car en Client/Serveur, le moteur de données tourne sur le serveur. Vous ne verrez donc jamais un événement moteur se réaliser sur votre poste client. Vous ne pourrez donc pas le tracer non plus à partir d’un poste client. Nous reviendrons ultérieurement sur les événements moteurs.

Dans un premier temps, nous allons nous amuser un peu et créer un bouton un peu "spécial".

  • allons en page 4 du formulaire Navigation, page des préférences
  • on trace un bouton
  • on modifie les propriétés comme ceci :
  •      - le Nom du bouton sera bSpecial
  •      - seul l’événement "Sur début survol" sera coché
  • et on édite la méthode du bouton (ALT-Clic sur le bouton)

vous y recopiez ce code-ci :

  //Emplacement de la souris au moment du déclenchement de la méthode
 POSITION SOURIS($Souris_H;$Souris_V;$BoutonSouris//A quelle position se trouve l'objet dans la fenêtre
 OBJET LIRE COORDONNEES(bSpecial;$Obj_G;$Obj_H;$Obj_D;$Obj_B)
 
  //On calcule le centre de l'objet
 $Centre_H:=$Obj_G+(($Obj_D-$Obj_G)/2)
 $Centre_V:=$Obj_H+(($Obj_B-$Obj_H)/2)
 
 $Decalage:=10 //Prévoir un décalage complémentaire de x pixels
 
 Si($Souris_H<$Centre_H//si la souris est à gauche du centre
    $H:=$Souris_H-$Obj_G+$Decalage  //déplacer l'objet à droite
 Sinon //la souris est à droite du centre
    $H:=-($Obj_D-$Souris_H+$Decalage//déplacer l'objet à gauche
 Fin de si

 Si($Souris_V<$Centre_V//si la souris est au dessus du centre
    $B:=$Souris_V-$Obj_H+$Decalage  //décaler vers le bas
 Sinon //la souris est en dessous du centre
    $B:=-($Obj_B-$Souris_V+$Decalage//décaler vers le haut
 Fin de si
 
  //Déplacer le bouton en fonction des informations définies ci-dessus
 OBJET DEPLACER(bSpecial;$H;$B)

qui signifie :

  • qu'on calculera la position de la souris
  • la position de l'objet (donc le bouton) pour en déterminer son centre
  • on prévoira de décaler l'objet d'un certain nombre de pixels
  • et ensuite on va calculer où se trouve la souris par rapport au centre du bouton, horizontalement et verticalement
  • par la suite il suffit de déplacer le bouton en X, Y

Voyons ce que ça donne.

  • affichons le formulaire (en utilisation la méthode Navigation)
  • allons sur la page des préférences
  • et essayons de cliquer sur le bouton :

Chaque fois qu'on s'approche du bouton, selon qu'on est placé au dessus, en dessous, à gauche ou à droite le bouton se déplace dans la position opposée.

Si le bouton sort de l'écran, il suffit de refermer le formulaire et de le redémarrer.

Voici un premier exemple d'utilisation des événements.

Prenons un autre exemple :  Lors de la saisie d'une intervention, nous souhaitons calculer la durée de l'intervention à partir des informations saisies dans l'heure de début et l'heure de fin.

Nous devons :

  • dans un premier temps ajouter le champ Heure de fin à la table.
    Pour gagner du temps, copions le champ Heure et collons-le dans la même table, puis il suffit de modifier son nom.
  • Nous l'ajoutons ensuite au formulaire entrée par duplication du champ heure de début et en adaptant leu champ concerné : heure d'intervention fin.
  • Nous devons également ajouter la durée pour vérifier que notre programmation fonctionne.
  • Ensuite, nous devons indiquer que la durée devra sera recalculée lorsque l'un de ces 2 champs heure sera modifié.
  • Nous cochons donc l'événément sur données modifiées et indiquons le calcul à effectuer.
    Attention ALT-Clic sur 2 objets qui n'ont pas encore de méthode ne crée la méthode que de l'objet sur lequel on a cliqué.

La durée sera recalculée comme étant la différence entre l'heure de fin moins l'heure d'intervention, à une condition, c'est que l'heure de fin soit renseignée c'est-à-dire qu'elle soit différente de 0.

On peut copier le code (copier) et maintenant réaliser la méthode de l'heure de fin.

Lorsqu'on va la modifier : il faudra que l'heure d'intervention soit renseignée et le mode de calcul de la durée sera toujours le même.
Vérifions bien évidemment que les heures soient saisissables puis testons sur une intervention

  • on prend toutes les interventions,  
  • on prend la première
  • on tape 14:00 et nous avons bien une durée de 2 heures qui est calculée
  • de 12:00 à 17:30 => 5:30
  • si on a commencé à 14:00 on a bien une durée de 03:30

La programmation a bien été effectuée au moment où on sortait du champ, c'est-à-dire dans le cadre du "sur données modifées".

Dans le chapitre suivant, nous aborderons la programmation des tableaux.

 
PROPRIÉTÉS 

Produit : 4D
Thème : Événements
Nom intl. : Video script

 
UTILISATION DE L'ARTICLE

Autoformation ( 4D v13)
Autoformation ( 4D v14)