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 :

evenement OnMouseUp sur un TRadioGroup


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 60
    Par défaut evenement OnMouseUp sur un TRadioGroup
    Bonjour,
    Alors que l'événement OnMouseUp est accessible dans l'inspecteur d'objet (BCB6) d'un TGroupBox, il n'apparait pas pour un TRadioGroup.
    Y a-t-il moyen d'intercepter cet événement sans avoir à utiliser un "hook" ?
    Merci
    AL

  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,
    A priori oui, en observant bien les propriétés de la 'chose' on vois que cela est possible au travers de ces 'Buttons'.
    Ce qui veut dire qu'il faut déclarer un évènement OnMouseUp 'standard' pour les Items du RadioGroup et affecter cet évènement en dynamique (par le code quoi) aux Items concernés.
    .dans le .h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void __fastcall OnRadioMouseUp(TObject *Sender, TMouseButton Button, Classes::TShiftState Shift, int X, int Y);
    .dans le .cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //le nouvel évènement :
    void __fastcall TForm2::OnRadioMouseUp(TObject *Sender, TMouseButton Button, Classes::TShiftState Shift, int X, int Y)
    {
    	ShowMessage("oki mouse up !");
    }
    //----------------------------------------------------------------------
    //affectation de l'évènement a un Item du TRadioGroup:
    void __fastcall TForm2::Button27Click(TObject *Sender)
    {
    RadioGroup1->Buttons[0]->OnMouseUp = OnRadioMouseUp;
    }
    J'ai essayé de dériver un composant de la classe TRadioGroup et de capter le message WM_MBUTTONUP mais cela ne semble pas fonctionner sans que l'on passe par un évènement déclenché par un Items spécifique dans le RadioGroup ...
    Cela donnerai qqchose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class TMRD : public TRadioGroup
    {
     
    private:
    		void __fastcall OnMouseUp(TMessage &msg);
    		BEGIN_MESSAGE_MAP
    		MESSAGE_HANDLER(WM_MBUTTONUP, TMessage, OnMouseUp)
    		END_MESSAGE_MAP(TRadioGroup)
     
    public:
    	__fastcall TMRD(TComponent* Owner);
    };
    A appronfondir quoi, mais je n'ai malheureusement pas le temps de suite, dsl.


    En espérant t'aider,
    @ +

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 60
    Par défaut
    Merci pour la réponse.
    J'avais aussi essayé sans succés ta seconde méthode (utilisation d'un MESSAGE_MAP)

    Concernant ta première methode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RadioGroup1->Buttons[0]->OnMouseUp = OnRadioMouseUp;
    - Buttons n'est pas un membre de TRadioGroup, donc cela ne fonctionne pas.
    - Si je mets RadioGroup1->OnMouseUp = OnRadioMouseUp; j'ai le message d'erreur : "OnMouseUp n'est pas accessible"

  4. #4
    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
    Citation Envoyé par alain lecomte
    - Buttons n'est pas un membre de TRadioGroup, donc cela ne fonctionne pas.


    Ben écoutes ... comment cela se fait il que mon EDI a moi me le propose ? ...



    J'invente rien : j'écris 'RadioGroup1', je met '->', je laisse tourner la bécane et la j'obtiens tous les membres accessibles dans lesquels je trouve 'Buttons'.
    Mais est ce le fait que je suis avec le BDS et non le Builder ?
    (ça m'étonnerais un peu, mais bon...)

    @+

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 60
    Par défaut
    Citation Envoyé par Sunchaser
    Mais est ce le fait que je suis avec le BDS et non le Builder ?
    C'est probablement l'explication, car avec BCB6 voila ce qu'il propose pour les B...



    Aprés tout, il faut bien que les nouveaux produits soient plus performants

  6. #6
    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
    Bonsoir,
    Mille excuses, effectivement je ne pensais pas réellement que cela soit spécifique au BDS ...

    Pour la seconde méthode, en plus, je m'étais trompé dans le nom du message a capter. Il faut y voir (par ex):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class TMRD : public TRadioGroup
    {
     
    private:
    		void __fastcall OnMouseUp(TMessage &msg);
    		BEGIN_MESSAGE_MAP
    		MESSAGE_HANDLER(WM_LBUTTONUP, TMessage, OnMouseUp)
    		END_MESSAGE_MAP(TRadioGroup)
     
    public:
    	__fastcall TMRD(TComponent* Owner);
    };
    Mais cela ne fonctionne que lors d'un click dans le Radiogroup mais en dehors d'un des items ...
    J'imagine que cela ne correspond pas a ce que tu cherchais.

    D'ailleurs, sans indiscrétion, qu'elle était la finalité de vouloir capter le 'MouseUp' ? En fonction des cas, peut être peut on imaginer travailler avec le WM_PAINT sur l'objet en question, ou qqchose comme cela (?)

    @ +

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] Evenement Click sur Datagrid
    Par Joad dans le forum ASP.NET
    Réponses: 2
    Dernier message: 30/05/2005, 13h37
  2. [JS] Evénement client sur un controle ASP
    Par Coplan dans le forum ASP.NET
    Réponses: 6
    Dernier message: 26/05/2005, 17h31
  3. Evenement clavier sur toute l'interface
    Par Guybrush dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 08/02/2005, 12h13
  4. [VB.NET] Erreur OnMouseUp sur Datagrid
    Par daner06 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/01/2005, 10h26
  5. capter l'evenement clic sur une cellule d'un string grid
    Par lasconic dans le forum Composants VCL
    Réponses: 3
    Dernier message: 25/06/2003, 10h51

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