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
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 4
    Points : 1
    Points
    1
    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 éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 287
    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 287
    Points : 9 364
    Points
    9 364
    Par défaut
    Je suis nul en objet, mais tu instancies ça où ?
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  3. #3
    Membre éprouvé

    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
    Points : 915
    Points
    915
    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
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 4
    Points : 1
    Points
    1
    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 éclairé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 303
    Points : 815
    Points
    815
    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
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 4
    Points : 1
    Points
    1
    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 averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 178
    Points : 416
    Points
    416
    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 émérite
    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 : 60
    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
    Points : 2 533
    Points
    2 533
    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.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 4
    Points : 1
    Points
    1
    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