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 :

mousewheel sur composant


Sujet :

C++Builder

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 29
    Par défaut mousewheel sur composant
    bonjour
    J'ai créé un comosant derivé de TGraphicsControl et je voudrai que recuperer l'evenement OnMouseWheel sur ce compo. J'y arrive pour Mousemove, MouseUp, MouseDown mais MouseWheel ne marche pas.
    Une petite explication sur le sujet ou un exemple seraient les bienvenues.
    D'avance merci.
    Fafacpp
    A+

  2. #2
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonjour,

    Comment as tu fais pour les autres évènements ?
    Pour MouseWheel, as tu essayé de mettre dans la déclaration de la classe de ton composant qqchose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void __fastcall OnMouseWheel(TMessage &msg);
     
    BEGIN_MESSAGE_MAP				
    MESSAGE_HANDLER(WM_MOUSEWHEEL, TMessage, OnMouseWheel)
    END_MESSAGE_MAP(TaClasse) //mettre ici le bon nom de classe de ton objet
    En espérant t'aider,
    @ +

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 29
    Par défaut
    Par exemple pour l'evenement OnMouseMove, j'ai créé deux evenement perso pour indiquer si la sourie est sur les boutons ou sur la vue (le compo c'est une vue avec des boutons pour la gerer) comme ceci :
    TView.h
    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
     
    class PACKAGE TView : public TGraphicControl
    {
    private:      ...
    		TNotifyEvent FOnMouseView; // Sourie sur vue
    		TNotifyEvent FOnMouseButt; // Sourie sur boutons
    		...
                    DYNAMIC void __fastcall MouseMove(Classes::TShiftState Shift, int X, int Y);
    protected:
    		...
    		virtual void __fastcall MouseView();
    		virtual void __fastcall MouseButt();
     
    public:       ...
     
    __published: 
    		...
    		__property TNotifyEvent OnMouseView = {read=FOnMouseView, write=FOnMouseView};
    		__property TNotifyEvent OnMouseButt = {read=FOnMouseButt, write=FOnMouseButt};
     
    };
    TView.cpp
    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
     
    ...
    void __fastcall TView::MouseView()
    {
    	 if(FOnMouseView) FOnMouseView(this);
    }
     
    void __fastcall TView::MouseButt()
    {
    	 if(FOnMouseButt) FOnMouseButt(this);
    }
    ...
    void __fastcall TView::MouseMove(Classes::TShiftState Shift, int X, int Y)
    {
     if (Y<=400)  // sourie sur vue
    	{
    	...
    	MouseView(); // evenement MouseView
    	}
     else MouseButt(); // evenement MouseButt
    }
    Tout ceci marche parfaitement.
    J'ai donc essayé de faire pareil avec MouseWheel comme ceci :
    TView.h
    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
     
    private:
                    ... 
                    TNotifyEvent FOnWheelUp; // Roulette +
    		TNotifyEvent FOnWheelDown; // Roulette - 
                     ...
                    DYNAMIC bool __fastcall DoMouseWheel(Classes::TShiftState Shift, int WheelDelta, const Types::TPoint &MousePos);
                    ...
    protected:
    		...
    		virtual void __fastcall WheelUp();
    		virtual void __fastcall WheelDown();
     
    public:
    		...
    __published:
    		...
    		__property TNotifyEvent OnWheelUp = {read=FOnWheelUp, write=FOnWheelUp};
    		__property TNotifyEvent OnWheelDown = {read=FOnWheelDown, write=FOnWheelDown};
    TView.cpp
    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
     
    ...
    void __fastcall TView::WheelUp()
    {
    	 if(FOnWheelUp) FOnWheelUp(this);
    }
    void __fastcall TView::WheelDown()
    {
    	 if(FOnWheelDown) FOnWheelDown(this);
    }
    ...
    bool __fastcall TView::DoMouseWheel(Classes::TShiftState Shift, int WheelDelta, const Types::TPoint &MousePos)
    {
     if (WheelDelta > 0)
    	WheelUp();
     else
       	WheelDown();
     return true;	
    }
    Mais ca ne marche pas! Les evenements Wheelp et WheelDown ne sont pas declechés quand j'actionne la roulette sur le compo.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 29
    Par défaut
    Pour OnMouseWheel je pense que c'est un evenement caché qu'il faut publier mais je sait pas trop comment faire.
    J'ai utilisé DoMouseWheel pour sa similitude avec mes evenements MouseMove, MouseUp et Mousedown existants, je pensais pouvoir facilement adapter ca à DoMouseWheel.
    Merci pour ta reponse.
    A+

Discussions similaires

  1. [C#]Problème sur composant perso (Bouton Transparent)
    Par SLE dans le forum Windows Forms
    Réponses: 1
    Dernier message: 06/10/2005, 00h12
  2. Dessin à la volée sur composant transparent
    Par orelero dans le forum 2D
    Réponses: 1
    Dernier message: 28/07/2005, 17h12
  3. [Delphi 6] dessiner sur composant QuickRep
    Par KrusK dans le forum Composants VCL
    Réponses: 2
    Dernier message: 18/06/2005, 00h48
  4. fuite de memoire dans une liste de pointeur sur composant
    Par Nicolos_A dans le forum Composants VCL
    Réponses: 2
    Dernier message: 16/12/2004, 08h46
  5. [VB.NET] Problème sur composant comboBox hérité
    Par SergeF dans le forum Windows Forms
    Réponses: 3
    Dernier message: 08/06/2004, 14h54

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