IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Programmation touche de fonction


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Par défaut Programmation touche de fonction
    Bonjour
    Je souhaite utiliser la Touche F2 pour dérouler deux actions :
    "action 1" lorsque j'appuie sur la touche F2
    "action 2"lorsque F2 se relève
    Voici ce que je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    INITIALISATION de MAFENETRE
    // Capture appui touche F2
    WM_keydown est entier = 256
    Evénement("PROCEDURE_AppuiF2",MAFENETRE..Nom + ".*",WM_keydown)
    // Capture relève touche F2
    WM_keyup est entier = 257       
    Evénement("PROCEDURE_RelacheF2",MAFENETRE..Nom + ".*",WM_keyup)
     
    PROCEDURE_AppuiF2
    SI ToucheEnfoncée(VK_F2) ALORS
    	Code action 1...
    FIN
     
    PROCEDURE_RelacheF2
    Code action 2...
    Voici mon problème :
    Lorsque j'appuie sur la touche F2 l'action1 fonctionne et lorsque je relâche F2 l'action2 se déroule également mais l'action 2 se déroule également lorsque qu'une touche quelconque du clavier se relève.
    Pour la procédure relacheF2 j'ai essayé le code mais l'action2 ne se déroule jamais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    PROCEDURE_RelacheF2
    SI ToucheEnfoncée(VK_F2) ALORS
    	Code action 2...
    FIN
    Je fais appel à vous pour me dire ou se trouve mon erreur. Par avance je vous remercie.

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 442
    Par défaut
    Bonjour,
    Quand tu es dans la deuxième procédure (touche relachée), tu ne sais pas quelle touche a été utilisée.
    Je ne sais pas si une fonction dans Windev te permet de connaitre la touche concernée, mais tu peux utiliser une variable globale qui "mémorise" le fait que tu soit passé dans la première procédure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    INITIALISATION de MAFENETRE
    // Capture appui touche F2
    WM_keydown est entier = 256
    Evénement("PROCEDURE_AppuiF2",MAFENETRE..Nom + ".*",WM_keydown)
    // Capture relève touche F2
    WM_keyup est entier = 257       
    Evénement("PROCEDURE_RelacheF2",MAFENETRE..Nom + ".*",WM_keyup)
     
    PROCEDURE_AppuiF2
    SI ToucheEnfoncée(VK_F2) ALORS
    	Code action 1...
                 ToucheF2Enfoncee = vrai
    FIN
     
    PROCEDURE_RelacheF2
    Si ToucheF2Enfoncee = vrai alors
        Code action 2...
    fin
    ToucheF2Enfoncee = faux
    Ainsi le "code action 2" ne sera executée que si l'utilisateur a pressé la touche F2.

    Tatayo.

  3. #3
    Membre chevronné
    Profil pro
    Freelance
    Inscrit en
    Avril 2003
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Avril 2003
    Messages : 393
    Par défaut
    Le plus sur est de se servir de la structure "_eve" de Windev.

    Dans la procédure de relachement tu rajoutes le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    PROCEDURE PROCEDURE_RelacheF2()
     
    touche_F2 est un entier = 0x71
    SI _EVE.wParam = touche_F2 ALORS
    	Trace ("touche F2 reclachée")
    FIN
    A+
    Vince
    http://vroy1.free.fr/wpfr/
    http://www.ennovsys.fr

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Par défaut
    Je cherchais effectivement s'il n'y avait pas une fonction qui fasse le lien entre la touche F2 lorsqu'elle est appuyée puis lorsqu'elle est relâchée ?
    Dans l'attente je vais utiliser une variable comme tu le suggères.
    Merci Tatayo pour ton aide

    Merci VincentRoy, ça marche très bien comme cela, j'ai découvert EVE.wParam
    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Touches de fonction
    Par bvsud dans le forum Composants VCL
    Réponses: 2
    Dernier message: 24/12/2005, 21h05
  2. Problème avec les touches CTRL & FONCTIONS
    Par bidule999 dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 03/12/2004, 09h52
  3. Linux : prb des touches CTRL + FONCTIONS...
    Par bidule999 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 03/12/2004, 09h51
  4. Programmation d'une fonction dans Rn
    Par simone.51 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 12/11/2004, 11h30
  5. Détecter l'appui sur la touche de fonction F2
    Par titiyo dans le forum Composants VCL
    Réponses: 6
    Dernier message: 18/06/2003, 11h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo