Rendre inactif tous les radio button d un groupe apres en avoir selectionne un. [Résolu]

Signaler
Messages postés
16
Date d'inscription
jeudi 23 juin 2005
Statut
Membre
Dernière intervention
25 août 2005
-
Messages postés
16
Date d'inscription
jeudi 23 juin 2005
Statut
Membre
Dernière intervention
25 août 2005
-
Bonjour,


Par avance desolee, je sais bien que cette question a deja ete posee mais je n ai pas comprit la reponse.


Si quelqu un possede un complement de reponse...


Merci


(PS:en VisualC++)

7 réponses

Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
si les valeurs des id se suivent,

une boucle for

(avec un test pour ne pas désactiver le choix courant)

devrait aller...

___________________________________________________________
Magicalement
Nono
Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
API Windows : EnableWindow(HWND, 0);

@+
Arnotic,
Admin CS, MVP Visual C++
Messages postés
452
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
19 décembre 2008
10
Plusieurs possibilites.



La premiere que je vois serait de creer tes radios avec le style
BS_AUTORADIOBUTTON qui doit donc gerer tout seul ton groupe de radios.

Dans cette methode, il est preferable de d'abord creer un groupbox
(BS_GROUPBOX) dans lequel tu ajouteras tes radios. Ainsi, tous les
radios de la groupbox marcherons ensemble. Pour ajouter les radioos
dans la groupbox, utilise le CreateWindow(Ex) classique en specifiant
le handle de ta groupbox comme fenetre parent.

HWND groupBox = CreateWindow("BUTTON", "titre", BS_GROUPBOX|WS_CHILD|WS_GROUP|WS_VISBLE, 10, 10, 100, 100, hWindow, NULL, hInst, NULL);
CreateWindow("BUTTON", "radio1",BS_AUTORADIOBUTTON|WS_VISIBLE_WS_CHILD, 5, 15, 50, 20, groupBox, NULL, hIsnt, NULL);
CreateWindow("BUTTON", "radio2",BS_AUTORADIOBUTTON|WS_VISIBLE_WS_CHILD, 5, 40, 50, 20, groupBox, NULL, hIsnt, NULL);


Voila, tu as deux radios dans un groupbox qui marche correctement.



La deuxieme solution serait des gerer un par un en recuperant les actions sur le radiobox et en decochant les autres.

Tu as aussi la fonction CheckRadioButton, mais il vaut mieux bosser
avec des ressources pour l'utiliser puisqu'elle demande les
identifiants de tes radios. Bien que tu puisses les assigner avec
SetWindowLong.




Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
Messages postés
16
Date d'inscription
jeudi 23 juin 2005
Statut
Membre
Dernière intervention
25 août 2005

Le probleme est que mes boutons sont definis de cette facon ( il y en a 32) .

CONTROL "1",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE |
WS_GROUP,13,205,24,10
CONTROL "2",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE,
13,215,24,10
CONTROL "3",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE,
13,227,24,10


et que je ne vois pas comment adapter ta solution ici( et oui quand je dis grande debutante je ne mens pas...)

MERKI
Maju.
Messages postés
452
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
19 décembre 2008
10
Ok, donc tu travailles avec des ressources.

As-tu mis tous tes radios dans un groupbox?
D'ailleurs, tu pourrais rajouter le style WS_VISIBLE a tes radios.



Sinon, essaie de mettre le style WS_GROUPBOX as quelques uns de tes radios, pour tester si ils en tous besoin pour fonctionner.

Je pense pas, mais je n'ai pas d'editeurs de ressources sous la main pour tester.



Si ca ne marche pas, envoie moi le code par mail, je pourrais plus faciement tester.

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
32 RadioBouton Ouahhhhhhhhhhh lol

Moi j'dirais associer un entier a chaque Radio et ensuite le passer à
une fonction qui Rendra inutilisable tout les autres sauf celui passer
en paramètres...

Mais ca ferai beaucoup de ligne, puisque 32 quand même xD

void Aurevoir( void ); //Bonne journée
Messages postés
16
Date d'inscription
jeudi 23 juin 2005
Statut
Membre
Dernière intervention
25 août 2005

Youhou,



Merci a tous pour vos reponses. Je n avais en fait pas pose la question
dans sa globalite. Avec mes 32 boutons je veux observer 32 signaux
differents (un sur chaque ligne). La premiere etape est de selectionner
la ligne puis d appuyer sur un bouton Run/Stop permettant la
visualisation du signal, je voudrais qu a cet instant tous les autres
boutons soient inactifs, et que seul le fait de rapuyer sur le bouton
Run/Stop permette l arret du signal et la reactivation de tous les
boutons.

Le bouton Run/Stop est deja programme et fonctionne parfaitement, mon
seul probleme reste qu avec le code ci dessous (que j utilise) tous les
boutons se grisent et il faut fermer et reeouvrir la fenetre pour
visusaliser une autre des 32 voix.


{


for(id=IDC_RADIO1;id<=IDC_RADIO32;id++)


GetDlgItem(id)->EnableWindow(active);


}





MERKI MERKI