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 :

Détecter appui sur une touche dans une fenêtre


Sujet :

WinDev

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut Détecter appui sur une touche dans une fenêtre
    Bonjour,

    J'ai une application utilisant un classeur à onglets dynamique et des fenêtres internes à l'intérieur de chaque onglet

    Je voudrais détecter qu'une modification a été apportée au contenu de la fenêtre.
    J'ai donc créé une variable au niveau global de ma fenêtre et je modifie cette variable lorsqu'une information a été modifiée.
    J'ai utilisé 3 évenements : A chaque modification de la fenêtre, Chaque touche relachée de la fenêtre, touche enfoncée de la fenêtre.
    En saisie je ne passe jamais par un des ces évènements

    Faut-il faire quelque chose de plus ?
    Sous Delphi par exemple si je veux intercepter au niveau de la Form qu'une touche alpha numérique du clavier a été utilisée je définis à True la propriété KeyPreview et j'utilise l'évenement onKeyPressed
    Je cherche l'équivalent sous WD

    Merci d'avance.

  2. #2
    Membre averti Avatar de LeonCosnyd
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 439
    Points : 368
    Points
    368
    Par défaut
    bonjour,

    Les évènements ont été placés dans la fenêtre "mère" ou dans les fenêtres internes ?

    Je n'ai pas testé mais j'imagine que les évènements doivent être captés dans la fenêtre interne et ensuite que tu programmes une procédure qui communique l'information à la fenêtre "mère".

    Une autre solution serait d'utiliser un hook clavier (plusieurs exemples en cherchant sur google), puis identifier la fenêtre ouverte -> le champs...

    bon courage
    Google est ton ami !

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 195
    Points : 156
    Points
    156
    Par défaut
    j'ai proposé une solution sur le site pcsoft, en utilisant la propriété ..Modifié, ça fonctionne bien

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 055
    Points : 9 394
    Points
    9 394
    Par défaut
    De ce que je comprend, tu as fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Evenement ( maProcedure, "mafenetre",  WM_xxx )
    Je pense qu'il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Evenement ( maProcedure, "mafenetre",  WM_xxx ) 
    Evenement ( maProcedure, "mafenetre.*",  WM_xxx )
    En effet, il me semble que le champ de saisie intercepte l'evenement 'Touche enfoncé'. Et que du coup, cet évènement n'arrive pas jusqu'à la fenetre.

    PS : j'ai aussi pensé à la propriété ..Modifié. Je pense que Delphi-ne veut un traitement en temps réel, Dès que l'utilisateur saisit quelque chose, il faut réagir.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Merci.

    J'ai placé mon code dans les évènements de la fenêtre interne.
    En fait c'est juste un booléen défini dans ma fenêtre interne et que je teste quand l'utilisateur veut fermer cette fenêtre.

    En effet, il me semble que le champ de saisie intercepte l'evenement 'Touche enfoncé'. Et que du coup, cet évènement n'arrive pas jusqu'à la fenetre.
    Là je retrouve une notion qui m'est familière sous Delphi et c'est la raison pour laquelle on modifie une des propriété de la fenêtre.


    Je pensais avoir essayé la propriété Modifié (qui m'aurait évité de gérer un booléen).
    Sûr que cela fonctionne sur une fenêtre interne ?

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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