ToolBar Button du style "tbrButtonGroup"

cs_santiago69 Messages postés 91 Date d'inscription jeudi 18 novembre 2004 Statut Membre Dernière intervention 17 décembre 2008 - 14 nov. 2006 à 18:50
cs_santiago69 Messages postés 91 Date d'inscription jeudi 18 novembre 2004 Statut Membre Dernière intervention 17 décembre 2008 - 14 nov. 2006 à 19:14
Salut a tous,
J'ai un comportement etrange de la toolbar de mon application.

Il y a 4 modes d'affichage differents dans mon appli. Pour les afficher, on passe soit par un menu, soit par une ToolBar, soit par un raccourci clavier. Bien sur on ne peut utiliser qu'un mode a la fois donc les 4 boutons de la ToolBar sont du style "tbrButtonGroup" et ils sont places entre 2 separateurs. Ainsi, des qu'on enfonce un bouton, les 3 autres reprennent leur etat normal.

Pour ne pas repeter mon code, toutes les instructions permettant d'obtenir un mode d'affichage sont dans l'evenement du menu. Les evenements de la Toolbar et du clavier ne font qu'appeler l'evenement du menu. Mon code ressemble donc a cela :

Private Sub menuAffichage_Click(Index as Integer)
    'Ici je met toutes les instructions
End Sub

Private Sub Toolbar_ButtonClick(ByVal Button As MSComctlLib.Button)
    Select Case Button.Key
        Case "Mode1"
            menuAction_Click 1
        Case "Mode2"
            menuAction_Click 2
    End Select
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Select Case KeyCode
        Case vbKey1
            menuAction_Click 1
        Case vbKey2
            menuAction_Click 2
    End Select
End Sub

Si on utilise le menu ou un raccourci clavier, il faut certes executer l'affichage demande, mais il ne faut pas oublier de modifier l'etat de la barre d'outil. En effet, si on passe au mode 2 avec le menu, c'est toujours le bouton mode 1 de la ToolBar qui sera enfonce. Donc le code de l'evenement du menu ressemble a ceci :

Private Sub menuAffichage_Click(Index as Integer)
    Toolbar.Buttons(Index).Value = tbrPressed
    'A la suite, je met les instructions d'affichage
End Sub

Par defaut, j'ouvre mon application sur l'affichage 1. Mon code contient donc :

Private Sub Form_Load()
    menuAffichage_Click 1
End Sub

Voila maintenant, si vous avez tout lu, voila le probleme :
1) Quand la fenetre apparait, l'affichage 1 est visible et le bouton 1 de la ToolBar est enfonce (jusque la tout va bien).
2) Si j'utilise le menu ou le clavier pour changer d'affichage, l'affichage correspondant apparait, le bouton correspondant s'enfonce, mais tout les autres boutons se relevent sauf le bouton 1 !
3) Des que j'ai clique une fois sur n'importe quel bouton de la ToolBar, son comportement redevient normal. Le bouton 1 n'est plus constament enfonce.

J'ai eu beaucoup de mal a exposer mon probleme avec clarte. Si quelqu'un a une idee, je serais ravi. Si un point reste obscure, je le reexplique.
Je pense malgre tout poster mon appli avec ce bug (dans une semaine peut etre), peut etre aurez vous moins de mal a comprendre avec l'ensemble du code.

Merci d'avance pour vos reponses
Santiago

il y a 10 types de personnes : ceux qui comprennent le binaire et ceux qui ne le comprennent pas.

3 réponses

cs_santiago69 Messages postés 91 Date d'inscription jeudi 18 novembre 2004 Statut Membre Dernière intervention 17 décembre 2008
14 nov. 2006 à 18:56
Petite correction, dans les evenements de la ToolBar et du clavier, il faut lire :


menuAffichage_Click 1


a la place de :

menuAction_Click 1
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
14 nov. 2006 à 19:06
Poster toute ton appli n'est, je pense, pas nécessaire. Mais ce qui est sur c'est qu'il manque le principal.

La partie de code présente dans le click du menu et gérant les différents changement de la toolbar.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
cs_santiago69 Messages postés 91 Date d'inscription jeudi 18 novembre 2004 Statut Membre Dernière intervention 17 décembre 2008
14 nov. 2006 à 19:14
J'ai tout mis.
La seule chose a faire lorsqu'on clique sur l'element X du menu, est d'enfoncer le bouton X de la ToolBar.




Toolbar.Buttons(Index).Value = tbrPressed






C'est la ToolBar elle meme qui s'occupe de relever les autres boutons sans que je fasse rien... Sauf lors du Load
0
Rejoignez-nous