Petit problème avec boutton de commande indexé

Résolu
cs_zidane22
Messages postés
67
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
13 octobre 2010
- 12 oct. 2010 à 23:42
cs_zidane22
Messages postés
67
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
13 octobre 2010
- 13 oct. 2010 à 22:35
Bonjour à tous
J'ai un petit problème avec des bouttons de commande indexés au nombre de 10.
command1(0)
command1(1)
command1(2)
..........
..........
..........
..........
command1(9)
Je voudrai que si je clique sur un des bouttons, il change sa couleur. Mais seulement le boutton en question.
J'ai éssayé avec ce code:
For x = 0 To 9
Command1(x).BackColor = vbRed
Next x

Mon problème ici est que si je clique sur un de bouttons de commande tous les bottons se changent de couleurs.
Cordialement

9 réponses

cs_Jack
Messages postés
14007
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
13 oct. 2010 à 21:27
Mais pourquoi veux-tu à tout prix désigner toi même l'index alors que l'évènement te le fournit ?
Si tu dois coloriser le bouton sur lequel tu viens de cliquer :
Command1_Click (Index As Integer)
    Dim r As Integer
    For r = 0 To UBound(Command1)
        If r = Index Then
            Command1(r).BackColor = vbRed    ' Celui cliqué
        Else
            Command1(r).BackColor = vbBlack  ' les autres
        End If
    Next r
End Sub 
3
NSUADI
Messages postés
540
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
1 février 2013
2
13 oct. 2010 à 00:12
pourquoi utilises tu une boucle dans ce cas?
tu n'as qu' à faire:
Command1(index_du_bouton).BackColor = vbRed


Ce qui compte,ce n'est pas ce qu'on a mais plutôt ce que l'on fait avec ce qu'on a...

Visual Basic .Net is the best
and vb6.0
0
cs_zidane22
Messages postés
67
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
13 octobre 2010

13 oct. 2010 à 00:36
Merci NSUADI de votre réponse
Command1(index_du_bouton).BackColor = vbRed
Ce n'est pas ce que je cherche à faire!

Moi je voudrai que si je clique sur:

command1(0) elle se change du couleur puis je clique sur command1(1) elle se change du couleur à son tour et ainsi de suite.
J'éspère que j'ai pu transmetre mon souci.
merci
0
NSUADI
Messages postés
540
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
1 février 2013
2
13 oct. 2010 à 02:47
et c'est quoi le soucis dans ce cas?
command1(0) et command1(1) sont bien 2 bouton différents...dans ce cas t'as qu'as mettre le code que je t'ai donné respectivement dans l'évènement click de command1(0) et command1(1)?

à moins que tu cherches à modifier la couleur de tes boutons indexés à partir d'un autre qui ne l'est pas?

Si tu pouvais en dire un peu plus car je comprends pas trop ce que tu cherches à faire...

Ce qui compte,ce n'est pas ce qu'on a mais plutôt ce que l'on fait avec ce qu'on a...

Visual Basic .Net is the best
and vb6.0
0

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

Posez votre question
cs_Jack
Messages postés
14007
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
13 oct. 2010 à 08:43
Salut

Si tes boutons sont indexés, l'évènement _Click te renverra l'index du bouton.
Il te suffit donc de mettre ta boucle dans cet évènement mais pas pour les passer tous en rouge, mais au contraire, pour les repasser en noir SAUF celui désigné par l'Index.
Un simple If dans ta boucle fera l'affaire.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_zidane22
Messages postés
67
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
13 octobre 2010

13 oct. 2010 à 17:01
Merci à vous pour vos réponses mais malheureusement j'ai pas encore pu trouver mon bonheur!
et c'est quoi le soucis dans ce cas?
command1(0) et command1(1) sont bien 2 bouton différents...dans ce cas t'as qu'as mettre le code que je t'ai donné respectivement dans l'évènement click de command1(0) et command1(1)?

En cliquant sur un bouton indexé, ça va produire quelque chose comme ça:
Command1_Click (Index As Integer)
End Sub 

J'ai éssayer d'écrire manuellement un évenement pour chaque boutton comme vous me le proposez
Command1(0)_Click() 
Command1(0).BackColor = vbRed
End Sub 

mais il m'envois un méssage d'érreur! Le programme refuse d'accepter cet événement.


Un simple If dans ta boucle fera l'affaire.

J'ai éssayé avec ce code mais ça n'a pas marché.
For x = 0 To Command1(Index)
If x = Command1(0) then
Command1(0).BackColor = vbRed
End If
If x = Command1(1) then
Command1(1).BackColor = vbRed
End If
........
........
........
Next x

Cordialement
0
cs_zidane22
Messages postés
67
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
13 octobre 2010

13 oct. 2010 à 17:18
Enfin J'ai pu trouver l'astuce!
If Command1(0).Value = True Then
Command1(0).BackColor = vbRed
End If
If Command1(1).Value = True Then
Command1(1).BackColor = vbRed
End If
If Command1(2).Value = True Then
Command1(2).BackColor = vbRed
End If

Merci encore à vous
0
cs_zidane22
Messages postés
67
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
13 octobre 2010

13 oct. 2010 à 22:27
merci beaucoup jack
Je suis débutant donc je ne métrise pas bien ces astuces.
Votre code est vraiment merveilleux!
cordialement
0
cs_zidane22
Messages postés
67
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
13 octobre 2010

13 oct. 2010 à 22:35
Je dois noter que je devais changer ce morceau de code pour éviter un méssage d'érreur: expected array
For r = 0 To UBound(Command1)

à
For r = 0 To Command1.UBound

merci encore jack
0