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 :

Intercepter des Evenements Windows depuis une classe


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 4
    Par défaut Intercepter des Evenements Windows depuis une classe
    J'ai déjà lu le premier post sur ce sujet sans résolution de mon problème.
    Je voudrais intercepter un évènement Windows dans une classe.

    Voici le code de ma classe :

    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
    21
    22
    23
    24
     
     
    device est une classe
     
    	giEvent est un entier
     
    FIN
     
     
    PROCEDURE Constructeur(argiEvent est un entier)
     
    giEvent = Evénement(cb,"*.*",argiEvent)
     
     
    PROCEDURE Destructeur()
     
    FinEvénement(giEvent)
     
     
    PROCEDURE PUBLIC cb()
     
    giEvent = giEvent // point d’arrêt
     
    RENVOYER Vrai
    J'ai placé un point d'arrêt dans la méthode 'cb', lorsque l'évènement Windows est envoyé, je ne passe pas dans la méthode 'cb'.

    Apparament Windev c'est faire çà, régression en WD16 ?

  2. #2
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 551
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 551
    Par défaut
    Je suis nul en objet, mais tu instancies ça où ?

  3. #3
    Membre très actif

    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    402
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 402
    Par défaut
    A mon avis si ça marche il faut que "cb" soit une méthode de "device"
    et bien sur que tu alloue un objet device.
    A voir je n'ai jamais essayé ça...

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 4
    Par défaut
    'cb' est effectivement une méthode de 'device'.

    L'objet est instancié dans l'initialisation de la fenêtre principale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    d est une device(0x8001)

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 303
    Par défaut
    Bonjour,

    Citation Envoyé par dahlback Voir le message
    J'ai déjà lu le premier post sur ce sujet sans résolution de mon problème.
    Je voudrais intercepter un évènement Windows dans une classe.

    Voici le code de ma classe :
    [ ... ]

    Apparemment Windev sait faire ça... ou bien est-ce une régression en WD16 ?
    Je suis bien étonné.
    Le WLangage prend effectivement en charge l'interception d'un événement Windows par une méthode d'un objet instancié...

    Je confirme que ça fonctionne pour Windev 16.
    Et l'aide en ligne n'en parle toujours pas.

    Alors le problème est ailleurs...
    Déjà, pour être certain d'interrompre l'exécution de la méthode, tu pourrais y insérer l'instruction Stop.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 4
    Par défaut
    J'ai essayé avec l'instruction 'stop' ainsi que d'autres techniques et je vous assure que je ne passe jamais dans la méthode 'cb'.

    La syntaxe du constructeur de la classe est-elle ok ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    PROCEDURE Constructeur(argiEvent est un entier)
     
    giEvent = Evénement(cb,"*.*",argiEvent)

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 179
    Par défaut
    Bonjour,

    Avez-vous essayé de remplacer "*.*" par le nom complet d'un champ de votre fenêtre. Je l'utilise comme ça depuis une classe et n'ai pas de problèmes particuliers.

    Sinon l'exemple "WD Lasso" utilise un Evénement à l'intérieur d'une classe pour comparaison.

  8. #8
    Membre Expert
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Par défaut
    Un message Windows est par nature envoyé à une fenêtre, fenêtre au sens large du terme, dans le sens ou même un contrôle est considéré comme une fenêtre.

    Il ne me semble pas que l'on puisse intercepter un message sans afficher quoi que ce soit.

    Peut être que certain type de message n'ont pas besoin de fenêtre par contre. Il faudrait donc savoir quel sont les messages que tu veux intercepter.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 4
    Par défaut
    Problème résolu => erreur bête => l'objet était alloué dans l'initialisation de la fenêtre et non dans les déclarations globales.
    Merci pour votre aide !

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/07/2017, 09h53
  2. Intercepter des Evenements Windows depuis une classe
    Par jimmypage dans le forum WinDev
    Réponses: 4
    Dernier message: 13/07/2012, 17h01
  3. [JUnit] Lancer des tests JUnit depuis une classe de test
    Par naglafar dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 29/07/2008, 15h51
  4. Réponses: 4
    Dernier message: 27/07/2007, 18h18
  5. Réponses: 4
    Dernier message: 16/08/2006, 09h19

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