Je débute et je suis déjà confronté à un problème qui me paraissait à la base assez simple à résoudre mais dont je ne trouve finalement pas la solution.
J'ai créé une GUI avec plusieurs onglets et différents boutons. Je souhaiterai simplement qu'un bouton soit grisé ou "caché" en fonction de l'onglet actif.
J'ai créé le code suivant mais cela ne fonctionne pas, le bouton clignote:
$testTAB = GUICtrlRead($Tab1)
Case $testTAB = 1
If GUICtrlGetState($ButtonMTSPower) <> $GUI_SHOW Then
GUICtrlSetState($ButtonMTSPower, $GUI_SHOW)
EndIf
Case $testTAB = 2
If GUICtrlGetState($ButtonMTSPower) <> $GUI_SHOW Then
GUICtrlSetState($ButtonMTSPower, $GUI_SHOW)
EndIf
Case $testTAB = 3
If GUICtrlGetState($ButtonMTSPower) <> $GUI_SHOW Then
GUICtrlSetState($ButtonMTSPower, $GUI_SHOW)
EndIf
Case $testTAB = 4
If GUICtrlGetState($ButtonMTSPower) <> $GUI_SHOW Then
GUICtrlSetState($ButtonMTSPower, $GUI_SHOW)
EndIf
Case $testTAB = 5
If GUICtrlGetState($ButtonMTSPower) <> $GUI_SHOW Then
GUICtrlSetState($ButtonMTSPower, $GUI_SHOW)
EndIf
Case $testTAB = 6
If GUICtrlGetState($ButtonMTSPower) <> $GUI_SHOW Then
GUICtrlSetState($ButtonMTSPower, $GUI_SHOW)
EndIf
Case $testTAB = 7
If GUICtrlGetState($ButtonMTSPower) <> $GUI_SHOW Then
GUICtrlSetState($ButtonMTSPower, $GUI_SHOW)
EndIf
Case $testTAB = 8
If GUICtrlGetState($ButtonMTSPower) <> $GUI_HIDE Then
GUICtrlSetState($ButtonMTSPower, $GUI_HIDE)
EndIf
Case $testTAB = 9
If GUICtrlGetState($ButtonMTSPower) <> $GUI_HIDE Then
GUICtrlSetState($ButtonMTSPower, $GUI_HIDE)
EndIf
Case $testTAB = 10
If GUICtrlGetState($ButtonMTSPower) <> $GUI_SHOW Then
GUICtrlSetState($ButtonMTSPower, $GUI_SHOW)
EndIf
Case $testTAB = 11
If GUICtrlGetState($ButtonMTSPower) <> $GUI_SHOW Then
GUICtrlSetState($ButtonMTSPower, $GUI_SHOW)
EndIf
Case $testTAB = 12
If GUICtrlGetState($ButtonMTSPower) <> $GUI_SHOW Then
GUICtrlSetState($ButtonMTSPower, $GUI_SHOW)
EndIf
Je teste donc sur quelle TABsheet je me trouve grâce à la variable $testTAB (vous aurez compris qu'il y en a 12) et si je suis sur la 8 ou la 9, le bouton nommé $ButtonMTSPower doit être caché. Tout ce code se trouve dans une boucle While et je pense que c'est ce qui cause le clignotement mais je ne sais pas comment faire autrement. Votre aide serait grandement appréciée
Merci !
Modifié en dernier par jguinch le ven. 13 mars 2015 14:19, modifié 1 fois.
Raison :Ajout de la balise Spoiler
If GUICtrlGetState($ButtonMTSPower) <> $GUI_SHOW Then ; la condition risque d'être toujours vraie
If Not BitAND(GUICtrlGetState($ButtonMTSPower),$GUI_SHOW) ; si le résultat (l'état) ne contient pas $GUI_SHOW
J'ai appliqué votre script chez moi et cela fonctionne. Malgré tout, j'ai quelques loupés, il me faut parfois cliquer de nouveau sur un onglet pour que le bouton se cache ou réapparaisse, selon la condition bien sur. Je n'ai pas encore compilé mon script (assez long au passage, plusieurs milliers de lignes), pensez vous que cela peut en être la cause ?
Effectivement, rien à voir avec la compilation du script, le problème reste identique.
J'ai testé en retirant une bonne partie de mon code et cela fonctionne. Il y a donc un élément de mon code qui pose ce petit problème. Je vais essayer de l'identifier. Quoiqu'il en soit, je vous remercie de votre aide rapdie !