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

C++Builder Discussion :

Composant dont événement n'est pas publié


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par défaut Composant dont événement n'est pas publié
    Bonjour,

    j'utilise un composant de la JVCL (mais en fait ça n'a pas grande importance) et malheureusement les événements onMouseEnter et onMouseleave ne sont pas publiés...
    Me voilà bien embêtée... comment est ce que je dois faire pour que mon composant réagisse lorsque la souris passe dessus ???

    merci...
    Pascale38

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 081
    Par défaut
    Il te faudrait toi même le gérer avec les Message WM_MOUSE_MOVE ... en s'inspirant de composant comme le TSpeedButton (c'est calculé à la main) si c'est un TGraphicControl

    Sinon, TrackMouseEvent, si ton Control est un TWinControl, tu utilises son Handle comme valeur de hwndTrack
    Lors la souris quittera le TWinControl, cela produira un WM_MOUSEHOVER ou WM_MOUSELEAVE selon ce que tu as demandé à TrackMouseEvent
    Cela fonctionne très bien, je l'ai utilisé pour Hint HTML, lorsque la souris ne survole plus ce Hint, cela le ferme la fenêtre automatiquement, en Delphi 6, OnMouseLeave n'existait pas dans une TForm (ce qui existe depuis au moins 2007)
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par défaut
    Je ne sais pas de quel type est mon composant, c'est un TJvRollOut, je suppose que c'est un TGraphicControl??
    Je vais regarder ce TSpeedButton, je trouve des posts sur le sujet dans le forum?

    merci,
    Pascale38

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par défaut
    heu je reviens vers toi :
    en s'inspirant de composant comme le TSpeedButton (c'est calculé à la main) si c'est un TGraphicControl
    pourrais tu développer un peu ou me dire où je peux trouver des infos ?
    Parce que là je sèche....

    merci !!!
    Pascale38

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 081
    Par défaut
    Il semble que TJvRollOut hérite de TJvCustomPanel qui de TWinControl, as-tu regardé TrackMouseEvent pour que Windows produise un WM_MOUSELEAVE qui te permettrait d'appeler qui provoquera un CM_MOUSELEAVE qui lui même provoquera un OnMouseLeave ?

    En théorie, le TWinControl gère lui TrackMouseEvent dans sa WndProc, si tu as une version récente, tu n'as qu'a publier !

    Pense que la JVCL est compatible avec plusieurs versions de Delphi (il faudrait jouer avec des directives en fonction de la version de Delphi qui supporte ou pas OnMouseLeave)

    As-tu juste essayé de publier OnMouseLeave et OnMouseEnter dans une classe héritée de TJvRollOut pour voir ce que cela donnait ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Réponses: 11
    Dernier message: 08/04/2009, 13h29
  2. Réponses: 4
    Dernier message: 01/08/2007, 15h45
  3. donner le focus sur un composant dont la fenetre est invisib
    Par yoghisan dans le forum Composants VCL
    Réponses: 12
    Dernier message: 17/06/2005, 16h27

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