Bonjour à tous,

Je cherche à intercepter la touche "Echappe" dans une fenêtre Windev... et cela ne fonctionne pas, du moins pas comme je le souhaiterais !

En l'espèce, j'ai une fenêtre appelée FEN_ModeListe qui contient un champ Fenêtre Interne.
Le champ Fenêtre Interne prend pour source une fenêtre Interne ne comportant qu'un seul champ : un champ table.
La source peut être au choix une table sur le fichier client, le fichier clé ou le fichier produit.
La sélection se fait par bouton de la barre d'outil (un pour chaque fichier).

Donc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
FEN_ModeListe
  -> FI_ListeClé     -> champ TABLE_Clé
  -> FI_ListeClient  -> champ TABLE_Client
  -> FI_ListeProduit -> champ TABLE_Produit
Cela établi, l'idée est de permettre à l'utilisateur de fermer FEN_ModeListe par un simple Echappe (par exemple, s'il a ouvert la liste par erreur).

Pour ce faire, je peux utiliser un "Evénement()" sur chacun des champs TABLE, et cela marche très bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Evénement(EntréeLigne,TableAGérer,WM_KEYDOWN)
puis
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
PROCEDURE EntréeLigne(MessageWindows)
   SI ToucheEnfoncée(VK_RETURN) OU MessageWindows=WM_LBUTTONDBLCLK ALORS
       Utilise(FEN_GeneClefs)
FIN
SI ToucheEnfoncée(VK_ESCAPE) ALORS
       Ferme(FEN_ModeListe)
FIN
Mais cela suppose de gérer les événements à trois endroits de l'application.

Je préfère donc mettre en œuvre une solution au niveau de la fenêtre FEN_ModeListe.
Mais pour ce faire, je suis apparemment obligé d'utiliser la syntaxe suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Evénement(Echappe,FEN_ModeListe..Nom+".*",WM_KEYDOWN)
Or, cette syntaxe fait référence aux champs, alors que je me disais (naïvement) qu'il devrait être possible de faire la même chose en ne faisant référence qu'à la fenêtre (comme semble l'indiquer la documentation), de cette façon-ci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Evénement(Echappe,FEN_ModeListe..Nom,WM_KEYDOWN)
Ce qui ne fonctionne pas, d'où - enfin - ma question : pourquoi cela ne fonctionne-t-il pas ??