Toolbar bouton enfonce ou pas

sfmaniaque Messages postés 15 Date d'inscription mardi 8 novembre 2005 Statut Membre Dernière intervention 22 octobre 2006 - 22 oct. 2006 à 21:17
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 - 23 oct. 2006 à 04:06
bonjour
j'aimerais avoir un bouton qui s'enfonce et se relache a chaque fois que je clique dessus...
mon code est le suivant dans l'evenement toolbar1_buttonclick

    If Toolbar1.Buttons(1).Value = 0 Then
    Toolbar1.Buttons(1).Value = 1
    Else
    Toolbar1.Buttons(1).Value = 0
    End If

ca me l'enfonce si je clicke dessus, mais il reste enfoncé si je reclicke a nouveau...
comment faire?
autre question, comment faire pour changer l'index de l'image du bouton quand il est enfoncé ?
merci de votre aide

15 réponses

B0mbJacK Messages postés 141 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 25 octobre 2006 1
22 oct. 2006 à 21:39
Lu,
voici le code à mettre

Toolbar1.Buttons(1).Value = CBool(Val(Toolbar1.Buttons(1).Value))
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
22 oct. 2006 à 21:41
Regarde dans les propriétés de ton bouton, donne lui le style tbrCheck

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
22 oct. 2006 à 22:10
Bonsoir,

Attention à la Toolbar1_Click. qui s' exécutera en boucle.


Toolbar1.Buttons(1).Value = 0 ou 1
est équivalente à Toolbar1_Click...

Solution: prévoir une boolean ( autoChange )
              qu' il faut initialiser à False.
 
  If autoChange = True  then Exit Sub
  If Toolbar1.Buttons(1).Value = tbrPressed Then
        autoChange = True
        Toolbar1.Buttons(1).Value = tbrUnpressed
        autoChange = False
  End If
0
sfmaniaque Messages postés 15 Date d'inscription mardi 8 novembre 2005 Statut Membre Dernière intervention 22 octobre 2006
22 oct. 2006 à 22:13
héhé bon ca a pas l'air si simple...le tbrcheck fait qu'il ne s'enfonce meme plus sauf au moment ou je clicke dessus, mais des que je lache le click ca revient en position initiale...
quand au code de bombjack, il me donne une erreur 380 : valeur de propriete non valide... le cbool n'a pas l'air d'etre aimé par mon vb6...

mais la ou je suis mort de rire c'est qu'en mettant le bouton sur cbrcheck dans les proprietes et en remplacant mon code par:

Toolbar1.Buttons(1).Value = Val(Toolbar1.Buttons(1).Value)
c'est a dire sans le cbool, ben ca marche!!
je comprends pas pourquoi, lol, a moins que le reglage tbrcheck change lui meme la valeur et que le zero renvoyé etait considere comme rien ou comme une chaine alors que l'attribut value attendait un entier... c'est la seule explication que je trouve!
sinon j'ai trouvé pour l'image, il suffit de faire toolbar1.buttons(1).image=2 ou un autre num qui correspond a l'index de l'image voulue dans le imagelist
enfin si quelqu'un pouvait me confirmer le semblant d'explication pourrie que j'ai cru entreapercevoir ca serait sympa....
0

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

Posez votre question
sfmaniaque Messages postés 15 Date d'inscription mardi 8 novembre 2005 Statut Membre Dernière intervention 22 octobre 2006
22 oct. 2006 à 22:15
ca ne fait pas de boucle chez moi, ca marche fin bien!lol...
manque un end if a ton code tiens chaibat
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
22 oct. 2006 à 22:23
ça m' étonne pas que tu bloques sur
des choses élémentaires cher Watson !
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
22 oct. 2006 à 22:44
dis plutôt que c' est incomplet !


  if autoChange = True  then Exit Sub
  autoChange = True
  If Toolbar1.Buttons(1).Value = tbrPressed Then
     Toolbar1.Buttons(1).Value = tbrUnpressed
  Else      
     Toolbar1.Buttons(1).Value = tbrPressed
  End If
  autoChange = False


Ainsi
s' il est enfoncé, il se relache
s' il est relaché il s' enfonce...
0
B0mbJacK Messages postés 141 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 25 octobre 2006 1
22 oct. 2006 à 22:49
re,

chez moi cette ligne marche
Toolbar1.Buttons(1).Value = Cbool(Val(Toolbar1.Buttons(1).Value)  )
et sans le cbool, j'ai ton erreur 380
....va comprendre!!!

bonne programmation....++
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
22 oct. 2006 à 23:02
Hé les petits !
ça marche sans code !
il suffit de ne rien mettre dans TolBar1_Click
configurer le style à tbrCheck et ça marche tout seul.


BOmbjacK
Toolbar1.Buttons(1).Value = Cbool(Val(Toolbar1.Buttons(1).Value)  )
ne fais qu' affecter la même valeur!

pardon pour l' exemple; c' était un cas particulier tiré d' un exemple
personnel.
0
sfmaniaque Messages postés 15 Date d'inscription mardi 8 novembre 2005 Statut Membre Dernière intervention 22 octobre 2006
22 oct. 2006 à 23:11
ouh la je debute,lol, mille pardon si j'ai pu paraitre insolent dans ma reponse...alors, d'abord, merci pour les differentes idees et soluces!
cela dit, chez moi, tbrcheck tout seul sans aucun code marche effectivement tres bien!!!hihihi

faut que le metier rentre, hein! je fais des efforts, mais je suis nouveau...et j'avais fait que du php jusqu'ici...alors la transition est un peu hard ^^
sinon,chaibat, toi qui a l'air d'etre un connaisseur...sais tu comment on recupere le code source d'une frame dont on ne connait pas le nom?
dans un webbrowser bien sur...si d'autres ont des idees, je suis preneur :)
0
B0mbJacK Messages postés 141 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 25 octobre 2006 1
22 oct. 2006 à 23:17
Re,

c'est vrai qu'on doit se sentir grand quand on connait l'objet Toolbar1!
chapo.. m'sieur ....nous on est trop petit devant toi!
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
23 oct. 2006 à 02:18
BombjacK,
j' espère qu' il n' y a pas de malentendu
de ma part concernant ton commentaire
ni de ta part concernant mon interjection ...
^^les petits ! , c' était par affection.
et sans prétention aucune.
je te connais si bien que je me permet
d' être familier...


désolé sfmaniaque
je n' ai pas de réponse à ta question


bon courage !


amicalement
0
B0mbJacK Messages postés 141 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 25 octobre 2006 1
23 oct. 2006 à 02:39
Re,
oui en effet , j'ai du mal comprendre désolé....et merci pour cette traduction. ...autant pour moi!

^^les petits ! , c' était par affection  <--- c'est gentil ;)

je te souhaite une bonne soirée et à bientot sur le forum chaibat
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
23 oct. 2006 à 02:50
Bonne nuit à toi aussi , p'tit !
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
23 oct. 2006 à 04:06
Re salut sfmaniaque
le fait de ne rien mettre dans ToolBar_ButtonClick
n' est valable que si tu utilises un toolbar avec juste
un bouton.
je reprend mon exemple au cas ou tu serais amené
un jour à gérer un toolbar avec plus d' un bouton
(comme un groupe d' options)
là tu seras obligé de mettre quelque chose dans ToolBar_Click
Supposons que tu as un ToolBar avec deux boutons
en position initiale , l' un serait enfoncé, l' autre relaché.
En cliquant sur le relaché, il s' enfonce, mais celui qui est
enfoncé doit se relacher (et inversement) et donc la position
du second doit être gérée par code...
pour celà tu dois tester:


Dim autoChange as Boolean (dans le module de ton form)


Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
   If autoChange=True Then Exit Sub
   autoChange = True
Select Case Button.Index
    Case 1
      If Toolbar1.Buttons(1).Value = tbrPressed Then
            ' button 1 enfoncé => relacher le button 2
           Toolbar1.Buttons(2).Value = tbrUnpressed
       Else
          'button 1 relaché => enfoncer le button 2
          Toolbar1.Buttons(2).Value = tbrPressed
      End If
   Case 2
       If Toolbar1.Buttons(2).Value = tbrPressed Then
            ' button 2 enfoncé => relacher le button 1
           Toolbar1.Buttons(1).Value = tbrUnpressed
       Else
          'button 2 relaché => enfoncer le button 1
          Toolbar1.Buttons(1).Value = tbrPressed
      End If
   End Select
     autoChange = False
End Sub


Notes bien que Toolbar1_ButtonClick se produit après
que le button ait pris sa nouvelle valeur ce qui veut dire
que tu ne testes pas sur ce qu' est été sa position mais sur
ce qui est devenue.


Voilà, c' est presque tout
0
Rejoignez-nous