4D Write v16

WR APPELER SUR EVENEMENT

Accueil

 
4D Write v16
WR APPELER SUR EVENEMENT

WR APPELER SUR EVENEMENT 


 

WR APPELER SUR EVENEMENT ( zone ; événement ; méthode ) 
Paramètre Type   Description
zone  Entier long in Zone 4D Write
événement  Entier long in Code de l'événement à intercepter
méthode  Chaîne in Nom de la méthode à exécuter

La commande WR APPELER SUR EVENEMENT filtre les événements avant qu’ils soient traités par 4D Write. Lorsqu’un événement donné survient, la méthode dont le nom est passé en troisième paramètre est exécutée.

Si zone vaut 0, la commande WR APPELER SUR EVENEMENT s’applique à l’ensemble des zones 4D Write. Dans ce cas, il est préférable de passer cette commande dans la Méthode base Sur ouverture (qui est exécutée à l’ouverture de la base). Si une zone a sa propre méthode d’événement installée, celle-ci est prioritaire sur la méthode d’événement installée sur l’ensemble des zones.

Passez dans le paramètre événement une valeur indiquant l'événement à intercepter. Vous pouvez utiliser les constantes suivantes, placées dans le thème "WR Evénements" :

Constante Type Valeur Comment
wr sur touche Entier long 0 Appui d'une touche (y compris flèches, retours chariot, tabulations…)
wr sur double clic Entier long 1 Double-clic
wr sur simple clic Entier long 2 Clic souris unique
wr sur triple clic Entier long 3 Trois clics rapprochés
wr sur clic droit Entier long 4 Clic avec le bouton droit
wr sur activation Entier long 5 Zone 4D Write activée ou désactivée
wr sur impression Entier long 7 Impression du document
wr sur règle Entier long 8 Changement dans la règle
wr sur mise a jour références Entier long 9 Recalcul des références en provenance de 4D
wr sur fermeture Entier long 10 Fermeture d’une fenêtre ou d’une zone 4D Write
wr sur glisser Entier long 11 Un objet est glissé
wr sur déposer Entier long 12 Un objet est déposé
wr sur minuteur Entier long 13 Fin d'un cycle du minuteur

Pour activer méthode pour tous les événements listés ci-dessus, passez -1 dans événement.

méthode est la méthode 4D qui est appelée quand l’événement passé en second paramètre est détecté. Elle doit comporter 7 paramètres qui devront être déclarés en vue d’une éventuelle compilation.

ParamètresTypeDescription
$1Entier longRéférence de la zone 4D Write
$2EntierTouche Maj
$3EntierTouche Alt (Windows), touche Option (Mac OS)
$4EntierTouche Ctrl (Windows), touche Commande (Mac OS)
$5EntierType d’événement qui a provoqué l’appel
$6EntierSa valeur varie en fonction du paramètre événement
$0Entier longSi méthode retourne une valeur
  • $1 renvoie le nom de la zone.
  • $2 vous informe sur l’état de la touche Maj. Si $2 est égal à 1, la touche a été enfoncée.
  • $3 vous informe sur l’état de la touche Alt sous Windows ou Option sous Mac OS. Si $3 est égal à 1, la touche a été enfoncée.
  • $4 vous informe sur l’état de la touche Ctrl sous Windows ou Commande sous Mac OS. Si $4 est égal à 1, la touche a été enfoncée.
  • $5 renvoie le type d’événement qui a provoqué l’appel de la méthode.
  • $6 varie en fonction de l’événement filtré :
    • Si événement est égal à 0, $6 vous renseigne sur le code de la touche interceptée. Si vous souhaitez interdire cette touche, initialisez $0 à 1.
    • Si événement est égal à 1 ou à 2, $6 vous indique si le clic ou le double-clic a eu lieu sur une référence. Dans ce cas, $6 a pour valeur 1. 
      Note :
      La méthode est appelée exceptionnellement avant la gestion du clic :
      • lors d’un clic ou d’un double-clic sur une référence (lien hypertexte, expression 4D ou expression HTML),
      • lors d’un clic droit (Windows) ou Control+clic (Mac OS) qui a pour vocation d’appeler le menu présentant la liste des champs de la base. Pour une meilleure compatibilité, il est conseillé d'utiliser l'événement 4 (wr sur clic droit).
    •  L'événement égal à 3 concerne la sélection de paragraphe. Un triple clic ne peut s'effectuer sur une référence sauf si une méthode d'appel sur événement a été installée sur le double-clic et que celui-ci a été intercepté par $0:=1. $6 n'est pas significatif dans ce cas.
    • Si événement est égal à 4, $6 indique le type de menu contextuel sur le point d’être affiché (en fonction de l’emplacement du clic) :
      • Si $6 est égal à 1, un menu de type 1 (clic dans l’en-tête/le pied de page) est affiché.
      • Si $6 est égal à 2, un menu de type 2 (clic dans le texte de la zone de corps) est affiché.
      • Si $6 est égal à 3, un menu de type 3 (clic dans une image de la zone de corps) est affiché.
    • Si événement est égal à 5, $6 prend la valeur 1 si la zone 4D Write est active et 0 dans le cas inverse.
    • Si événement est égal à 7, $6 vous indique le numéro de la table sur lequel porte le mailing. Dans le cas d’une impression simple, $6 prend la valeur 0.
    • Si événement est égal à 8 (une action s'est produite dans la règle), $6 ne retourne pas de valeur significative. Initialisez $0 à 1 si vous souhaitez empêcher toute action dans la règle.
    • Si événement est égal à 9, $6 vous indique l’endroit où s’effectue le recalcul de la référence :
      • Si $6 est égal à 0, le recalcul s’effectue dans le corps du document.
      • Si $6 est égal à 1, le recalcul s’effectue dans l’en-tête.
      • Si $6 est égal à 2, le recalcul s’effectue dans le pied de page.
    • Si événement est égal à 13, la méthode sera appelée automatiquement tous les N ticks (un tick = 1/60e de seconde), quelles que soient les actions de l’utilisateur. Par défaut, le minuteur génère l'événement tous les 3600 ticks (60 secondes).

L'utilisation d'un minuteur dans une zone permet notamment de mettre en oeuvre un mécanisme de sauvegardes de sécurité automatiques des documents en cours d’édition. Vous pouvez modifier la fréquence du minuteur à l'aide de la commande WR FIXER PROPRIETE ZONE. Attention, la méthode ne doit pas effectuer de traitement trop lourd, car son exécution répétée peut ralentir significativement l’application.

Important : méthode renvoie 0 ou 1 dans $0. Si vous souhaitez que cette méthode prenne en compte l’événement, initialisez $0 à 0. En revanche, si vous ne souhaitez pas en tenir compte, initialisez $0 à 1.
Pour illustrer ce point, imaginons le cas suivant : pour une raison quelconque, vous ne souhaitez pas qu’apparaisse le caractère “@” dans votre document. Dans ce cas, filtrez la saisie de tous les caractères apparaissant dans le document, initialisez $0 à 1 et lorsque $6 est égal au code de caractère de l’arobas, ignorez-le. Vous empêchez ainsi la frappe de ce caractère.

Note : Si vous filtrez la saisie de caractères, elle sera considérablement ralentie. En effet, un contrôle s’opérera sur chaque frappe.

Exemple  

Vous souhaitez, suivant l’événement filtré, appliquer un traitement :

  `Méthode formulaire d’une base en mode "Menus créés"
 Si(Evenement formulaire=Sur chargement)
    WR APPELER SUR EVENEMENT(LaZone;wr sur touche;"MéthEvénement")
  `Appel sur la frappe de caractères
    WR APPELER SUR EVENEMENT(LaZone;wr sur activation;"MéthEvénement")
  `Appel sur l’état de la zone (active ou désactive)
    INACTIVER LIGNE MENU(2;1)
  `Désactivation de la commande de menu "Changer polices"
    WR FIXER PROPRIETE ZONE(LaZone;wr fréquence appel;54000)
  `Appel du minuteur toutes les 15 mn
    WR APPELER SUR EVENEMENT(LaZone;wr sur minuteur;"MéthEvénement")
  `Mise en place de l'autosave
 Fin de si
 
  `Méthode MéthEvénement
 C_ENTIER LONG($0;$1;$2;$3;$4;$5;$6)
 Au cas ou
    :($5=wr sur touche)
  `Interception des touches
       Si(($6=199)|($6=200))
  `Si les codes ASCII correspondent à ceux des touches « »
          BEEP
          $0:=1
       Sinon `On laisse l’événement à 4D Write
          $0:=0
       Fin de si
    :($5=wr sur activation`Interception du changement d’état de la zone (active ou désactivée)
       Si($6=0)
  `Si la zone est désactivée
          INACTIVER LIGNE MENU(2;1)
  `Désactivation de la commande de menu "Changer polices"
       Sinon `Si la zone est active
          ACTIVER LIGNE MENU(2;1)
  `Activation de la commande de menu "Changer polices"
       Fin de si
    :($5=wr sur minuteur)
  `Toutes les 15 mn
       $NomDoc:="C:\\Temp\\Docs\\LaZone.4W7"
       WR SAUVER DOCUMENT(LaZone;$NomDoc;"4WR7")
 Fin de cas



Voir aussi  

WR APPELER SUR ERREUR
WR Lire methode sur evenement

 
PROPRIÉTÉS 

Produit : 4D Write
Thème : WR Utilitaires
Numéro : 89174
Nom intl. : WR ON EVENT

 
HISTORIQUE 

Modifié : 4D Write 2004.1

 
UTILISATION DE L'ARTICLE

4D Write - Langage ( 4D Write v16)