Griser un item d'un radiogroup

Résolu
florian060190 Messages postés 21 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 27 décembre 2014 - 29 avril 2009 à 14:52
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 - 1 mai 2009 à 10:58
Bonjour,
Dans la réalisation d'un jeu style 1000 bornes, je n'arrive pas, au sein d'un radiogroup à griser UN seul item de manière qu'il soit incliquable.
Nous pensions à radiogroup1.items[I].enabled:=false mais cette solution semble bien trop simple pour Delphi vu qu'il ne compile pas.

Merci d'avance.
Très cordialement.

8 réponses

JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
29 avril 2009 à 17:01
BOUH !
On peut :
 MonRadioGroup.Controls[MonIndex].Enabled := MonBoolean;

De rien ^^
1
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
29 avril 2009 à 16:10
Ce n'est malheureusement pas possible avec un TRadioGroup.
Ce que tu peux faire, c'est mettre autant de TRadioButtons qu'il y avait d'items dans le TRadioGroup, et là tu peux utiliser la propriété Enabled de chaque bouton. Après, il faudra gérer toi-même l'unicité de la sélection (1 seul radiobutton coché, pas plus). Pour cela, rien de très difficile : tu décoches tous les boutons cochés puis tu coches celui sur lequel on a cliqué).

Cordialement, Bacterius !
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
29 avril 2009 à 16:21
Salut,




Comme dit Bacterius ou plus simple :

utilise une GroupBox contenant tes RadioButtons et fait :

MonRadioButton.Enabled := not MonRadioButton.Enabled;
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
29 avril 2009 à 16:37
Ou alors, en plus compliqué, et pour une utilisation extensive, crée un nouveau composant TRadioGroup et, à la place des chaînes pour mettre des items, mets plutôt des TRadioButtons :)

Cordialement, Bacterius !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
29 avril 2009 à 17:09
*Gros silence dans la salle*
*kof kof*
Non mais oui très bonne idée, je ne savais pas que les composants TRadioButton contenus dans le TRadioGroup étaient référencés dans les Controls ... j'aurais dû m'en douter en même temps lol puisqu'ils sont créés en prenant comme propriétaire le TRadioGroup ...

Cordialement, Bacterius !
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
29 avril 2009 à 18:01
... Ah bein ouais.

C'est Julio le plus fort au 1000 bornes !..
0
florian060190 Messages postés 21 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 27 décembre 2014
1 mai 2009 à 01:22
Merci Julio!


Désolé pour le retard mais merci beaucoup.


Donc voilà un problème en moins. Niveau 2:


Nous cherchons à présent (je vais essayer d'expliquer clairement mais je vous garantis rien) à changer la couleur de la colonne du joueur. Par exemple, lorsque le joueur ne peut pas jouer et est bloqué (notamment au début de la partie tant qu'il n'a pas de feu vert), nous cherchons à ce que sa colonne reste avec un fond ROUGE(ou au moins la première case de cette colonne (comportant le numéro du joueur)). Dès qu'il obtient un feu vert paf, ça passe en fond VERT. Nous avons tenté avec le paragraphe MASELECTION vu en cours mais cette option semble faire des siennes. Je comprends pas pourquoi Delphi ne propose pas une propriété plus simple car dans le fond nous ne demandons pas grand chose, juste quelque chose du genre: MonStringgrid[1,2].fixedcolor:=ClLime

En vous remerciant à nouveau.
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
1 mai 2009 à 10:58
En gros tu voudrais colorier une cellule du TStringGrid ... Delphi ne peut pas tout faire pour toi lol, mais il t'offre un événement intéressant, qui est appelé à chaque dessin de cellule : OnDrawCell.
Regarde :

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
{ On vérifie que ça soit bien la colonne (et la ligne, optionnellement) voulue - chaque cellule mérite un événement OnDrawCell) }
if (ACol ColonneVoulue) {and ARow LigneVoulue} then
begin
StringGrid1.Canvas.Brush.Color := clLime; { Couleur verte }
StringGrid1.Canvas.Rectangle(Rect);
{ On dessine un rectangle vert dans la cellule - le rectangle est fourni }
end;
end;

Ici, par exemple, si tu définis ColonneVoulue à 1, la deuxième colonne sera toute verte après avoir connecté cette procédure à l'événement OnDrawCell de ta stringgrid. Après, il faudra peut-être créer un tableau booléen bidimensionnel pour savoir si une cellule est verte, rouge, ... etc ...

Cordialement, Bacterius !
0
Rejoignez-nous