WR APPELER SUR EVENEMENT

4D - Documentation   Français   English   German   4D Write, Commandes par thèmes   4D Write, Liste alphabétique des commandes   4D Write, Constantes par thèmes   Retour   Précédent   Suivant

version 6.0


WR APPELER SUR EVENEMENT (zone; événement; méthEvénement)

ParamètreTypeDescription
zoneEntier longZone 4D Write
événementEntier longCode de l'événement à intercepter
méthEvénementAlphaNom de la méthode à exécuter

Description

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.

Les événements qui peuvent être interceptés sont les suivants :

EvénementValeur
Saisie de caractères (y compris flèches, retours chariot, tabulations…)0
Double-clic1
Clic souris2
Zone 4D Write activée ou désactivée5
Impression du document7
Changement dans la règle8
Recalcul des références en provenance de 4D9
Fermeture d'une fenêtre ou d'une zone 4D Write10

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

méthEvénement est la méthode 4e Dimension qui est appelée quand l'événement passé en second paramètre est détecté. Elle doit comporter 6 ou 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 (MacOS)
$4EntierTouche Ctrl (Windows), touche Commande (MacOS)
$5EntierType d'événement qui a provoqué l'appel
$6EntierSa valeur varie en fonction du paramètre événement
$0EntierSi méthEvénement 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 MacOS. 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 MacOS. 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 ASCII 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 méthEvénement est appelée exceptionnellement avant la gestion du clic :

- lors d'un clic ou d'un double-clic sur une référence,
- lors d'un clic droit (Windows) ou Control+clic (MacOS) qui a pour vocation
d'appeler le menu présentant la liste des champs de la base.

- 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 à 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.

Important : méthEvénement 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 ASCII de l'arobas, ignorez-le. Vous empêchez ainsi la frappe de ce caractère.

Notes :

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

Pensez à déclarer la variable $0 en Entier long.

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;0;"MéthEvénement") 
         `Appel sur la frappe de caractères
      WR APPELER SUR EVENEMENT (LaZone;5;"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"
   Fin de si 

      `Méthode MéthEvénement
   C_ENTIER LONG($0;$1;$2;$3;$4;$5;$6)
   Au cas ou 
   : ($5=0)               
         `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=5)  `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
   Fin de cas

Référence

WR APPELER SUR ERREUR, WR Lire methode sur evenement.


4D - Documentation   Français   English   German   4D Write, Commandes par thèmes   4D Write, Liste alphabétique des commandes   4D Write, Constantes par thèmes   Retour   Précédent   Suivant