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
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
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:
.dans le .cpp:
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);
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 ...
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; }
Cela donnerai qqchose comme :
A appronfondir quoi, mais je n'ai malheureusement pas le temps de suite, dsl.
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); };
En espérant t'aider,
@ +![]()
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 :
- Buttons n'est pas un membre de TRadioGroup, donc cela ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part RadioGroup1->Buttons[0]->OnMouseUp = OnRadioMouseUp;
- Si je mets RadioGroup1->OnMouseUp = OnRadioMouseUp; j'ai le message d'erreur : "OnMouseUp n'est pas accessible"![]()
Envoyé par alain lecomte
![]()
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...)
@+
![]()
C'est probablement l'explication, car avec BCB6 voila ce qu'il propose pour les B...Envoyé par Sunchaser
Aprés tout, il faut bien que les nouveaux produits soient plus performants![]()
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):
Mais cela ne fonctionne que lors d'un click dans le Radiogroup mais en dehors d'un des items ...
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); };![]()
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 (?)
@ +![]()
Partager