PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → interception d'une touche au clavier.
interception d'une touche au clavier.
Iniciado por stephoncoco, jul., 03 2005 3:04 AM - 10 respostas
Publicado em julho, 03 2005 - 3:04 AM
Bonjour à tous.

Je souhaiterais pouvoir intercepter l'appui d'une touche au clavier au niveau d'une fenêtre, quelque soit le champ dans lequel le curseur est positionner.

A l'heure actuelle, je sais comment le faire pour un champ précis, mais moi, je veux le faire pour TOUTE la fenêtre, quelque soit le champ, sans avoir à spécifier pour chaque champ le code associer à l'interception.

Pour être plus clair : j'ai 20 champs dans ma fenêtre et je ne veux taper le code d'interception qu'UNE seule fois, je ne sais pas où, je ne sais pas quoi, mais une seule fois et dans la fenêtre.

J'espère avoir été précis, merci d'avance.
Publicado em julho, 04 2005 - 10:25 AM
Il y a peut etre une autre solution mais moi je mettrais un bouton caché avec un raccourci.

Ca devrait marcher

Matthieu J
Publicado em julho, 04 2005 - 10:35 AM
Il te suffit d'intercepter l'événement 256 sur tous les champs de toutes les fenêtres.
Publicado em julho, 04 2005 - 11:05 AM
Bonjour,

Dans le code de la fenêtre, tu peux intercepter "Touche enfoncée"...


Cordialement,

C.AUBRY
Publicado em julho, 04 2005 - 11:09 AM
Mets le code dans un bouton et tu choisis la touche d'appel dans la description du bouton (tu peux
mettre le bouton en dehors de la fenêtre pour qu'il n'apparaisse pas)


Stephon a écrit :
Bonjour à tous.

Je souhaiterais pouvoir intercepter l'appui d'une touche au clavier au niveau d'une fenêtre, quelque soit le champ dans lequel le curseur est positionner.

A l'heure actuelle, je sais comment le faire pour un champ précis, mais moi, je veux le faire pour TOUTE la fenêtre, quelque soit le champ, sans avoir à spécifier pour chaque champ le code associer à l'interception.

Pour être plus clair : j'ai 20 champs dans ma fenêtre et je ne veux taper le code d'interception qu'UNE seule fois, je ne sais pas où, je ne sais pas quoi, mais une seule fois et dans la fenêtre.

J'espère avoir été précis, merci d'avance.
Publicado em julho, 04 2005 - 1:23 PM
Merci de vos réponses attentionnées.

Ceci dit, ce que je veux, c'est écrire un seul code, quelque part, dans mon projet, et qui me permette de lancer une procédure à partir de n'importe quel endroit de TOUTE mon appli.

Je pense que cela doit être faisable, mais me taper un code dans TOUTES les fenêtres, c'est beaucoup trop laborieux pour moi (j'ai environ 200 fenêtres !!!).

Sur un autre site, j'ai reçu une réponse assez interessante et je vous en fait profiter :
Il suffit de mettre cette ligne dans le code du projet :

// interception de l'evenement d'appui sur touche
Evénement ("pg_touche_appuyée", "*.*", WM_KEYDOWN)
Publicado em julho, 04 2005 - 6:26 PM
La, tu triches : tu avais dit : une fois par fenetre et non un fois par appli

"Je souhaiterais pouvoir intercepter l'appui d'une touche au clavier au niveau d'une fenêtre, quelque soit le champ dans lequel le curseur est positionner."

Petit coquin, va

Matthieu J
Publicado em julho, 04 2005 - 10:34 PM
Vous pouvez essayer de saisir votre code d'interception dans la partie de code "A chaque modification de la Fenêtre".

Chaque fois qu'un utilisateur appuyera sur une touche du clavier alors que le curseur est dans un champ de la fenêtre, le code "A chaque modification de la Fenêtre" sera exécuté, quelque soit le champ en cours de saisie.

Il ne faut pas oublier en fin de code d'interception de revenir au champ en cours de saisie en positionnant le curseur à l'endroit de la saisie en cours


Voici un exemple de code à insérer dans la partie "A chaque modification de la Fenêtre" :

Local
e_Position_Curseur est un entier

// Sauvegarde position du curseur
e_Position_Curseur = {ChampEnCours()}..Curseur

...
Code d'interception
...

// Affichage du curseur à l'endroit de la saisie en cours
{ChampEnCours()}..Curseur = e_Position_Curseur


En espérant avoir répondu à votre demande

Bon développement...
Publicado em julho, 05 2005 - 12:36 AM
Pour Matthieu : je ne triche pas, j'ai bien préciser que je voulais intercepter l'evenement de touche au clavier au niveau de la fenêtre, cela veut dire (et pardon de n'avoir pas été précis) que l'appui est intercepté lorsqu'il se fait en dehors d'un champ.

Je m'explique : j'ai des fenêtres qui affichent des résultats sous forme de tables non sélectionnables.

Je souhaite donc afficher une aide en ligne permettant d'expliquer ces résultats.

Or, dans ma fenêtre, je n'ai aucun champ (qui prend le focus), donc je n'ai aucun endroit où spécifier un numéro de page d'aide.

C'est juste une histoire de focus.
Publicado em julho, 05 2005 - 12:22 PM
Bonjour,
Il suffit d'utiliser le survol souris sur les champs de la fenêtre ou des
fenêtres pour lesquelles une aide doit s'afficher
Déclare une variable globale au niveau du projet NuméroPageAide par exemple,
puis lors du survol du champ de la fenêtre, affecter le numéro de la page
d'aide souhaitée.
Mettre un bouton Aide en dehors de chaque fenêtre en visible, actif et
affecter la lettre d'appel F1

Exemple :
Code du bouton d'aide
WHelp(fRepEnCours()+"NomFichierAide.chm",NuméroPageAide)

Code de survol souris du champ Table1
NuméroPageAide = 1 (1 = n° de la page d'aide affecté lors de la création du
fichier d'aide)
// Code à répéter pour chaque champ auquel on affecte une aide, en
changeant le n° de page...

Ainsi lorsque tu appuieras sur la touche F1 lors du survol de la table1, la
page d'aide N°1 sera affichée, Etc....

Le bouton d'aide peut être copié/collé dans chaque fenêtre où tu en as
besoin, seule l'affectation de la page lors du survol souris diffèrera.

J'utilise ce procédé pour toutes mes aides en ligne afin d'afficher la page
correspondant à l'élément survolé lors de l'appui sur F1


"stephon" <stephoncoco@yahoo.fr> a écrit dans le message de news:
42c99326$1@news.pcsoft.fr...


Pour Matthieu : je ne triche pas, j'ai bien préciser que je voulais
intercepter l'evenement de touche au clavier au niveau de la fenêtre, cela
veut dire (et pardon de n'avoir pas été précis) que l'appui est intercepté
lorsqu'il se fait en dehors d'un champ.

Je m'explique : j'ai des fenêtres qui affichent des résultats sous forme
de tables non sélectionnables.

Je souhaite donc afficher une aide en ligne permettant d'expliquer ces
résultats.

Or, dans ma fenêtre, je n'ai aucun champ (qui prend le focus), donc je
n'ai aucun endroit où spécifier un numéro de page d'aide.

C'est juste une histoire de focus.
Publicado em julho, 05 2005 - 1:10 PM
Ca c'est pas mal du tout, ça m'interesse énormément...

Merci beaucoup, je vais creuser la question.