Page 1 sur 1
[R] Griser un bouton
Posté : mer. 26 janv. 2011 08:27
par Christelle10
Ma question est simple, peut on griser un bouton comme un bouton inaccessible
comme le bouton back :
si oui comment ?
merci.
Re: [..] Griser un bouton
Posté : mer. 26 janv. 2011 09:13
par zeshrek
Oui c'est possible, il suffit de le passer en disable et de le repasser en enable pour le réactiver :
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 202, 191, 192, 114)
$Button1 = GUICtrlCreateButton("sortir", 56, 120, 75, 25, $WS_GROUP)
GUICtrlSetState($Button1, $GUI_DISABLE)
$Checkbox1 = GUICtrlCreateCheckbox("activer le bouton", 48, 56, 97, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $Button1
Exit
case Else
if GUICtrlRead($Checkbox1) = 1 Then
GUICtrlSetState($Button1, $GUI_ENABLE)
Else
GUICtrlSetState($Button1, $GUI_DISABLE)
EndIf
EndSwitch
WEnd
Re: [..] Griser un bouton
Posté : mer. 26 janv. 2011 09:50
par Christelle10
hum merci pour le code cependant je sais pas si ce n'est que moi mais celui clignote chez moi
mais sa va j'ai juste besoin de désactiver le bouton
merci.
Re: [R] Griser un bouton
Posté : mer. 26 janv. 2011 10:27
par zeshrek
Je poursuis bien que le topic soit [R] parceque l'info peut éventuellement servir a d'autres.
Oui en fait c'est 'normal' que ca clignotte, vu que la boucle lui fait changer d'état plein de fois
par seconde, du coup l'interpreteur redessine le bouton autant de fois.
Pour regler le pb il suffit de checker qu'il n'est pas déja dans l'état ou on veut le mettre :
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 202, 191, 192, 114)
$Button1 = GUICtrlCreateButton("sortir", 56, 120, 75, 25, $WS_GROUP)
GUICtrlSetState($Button1, $GUI_DISABLE)
$Checkbox1 = GUICtrlCreateCheckbox("activer le bouton", 48, 56, 97, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $Button1
Exit
case Else
if GUICtrlRead($Checkbox1) = 1 and GUICtrlGetState($Button1) <> $GUI_ENABLE Then
GUICtrlSetState($Button1, $GUI_ENABLE)
Elseif GUICtrlRead($Checkbox1) = 0 and GUICtrlGetState($Button1) <> $GUI_DISABLE Then
GUICtrlSetState($Button1, $GUI_DISABLE)
EndIf
EndSwitch
WEnd
Re: [R] Griser un bouton
Posté : mar. 03 juin 2014 14:12
par T123x3
Bonjour a tous!!
j'ai une petite question par rapport à ça:
-Si, par exemple, quand on ouvre une application et que des le départ le bouton est grisé (disable) mais quand on coche une checkbox sur 40, le bouton revient à la normal. Je voudrai savoir comment fait!
Je m'explique, on a 40 checkbox, et n'importe laquelle, si on coche une, le bouton devient Enable. parce que je vois sur votre exemple, il y a qu'une seule checkbox.
Merci d'avance!!
Re: [R] Griser un bouton
Posté : mer. 04 juin 2014 08:30
par TommyDDR
Faites un tableau de checkbox et une boucle.
Zeshrek...
Re: [R] Griser un bouton
Posté : mer. 04 juin 2014 09:10
par T123x3
Merci!!!
Mais comment tu fais pour mettre des checkbox dans un tableau?
Excuse-moi, mais je suis débutant, je connais pas encore très bien ce language
Re: [R] Griser un bouton
Posté : mer. 04 juin 2014 12:09
par TommyDDR
Cadeau :
► Afficher le textecode
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
Opt("MustDeclareVars", 1) ; À mettre dans tous vos scripts pour ne pas oublier de déclarer vos variables
Opt("GuiOnEventMode", 1) ; Activation du mode évenementiel
Global $gui
Global $taille = [210, 200] ; Déclaration d'un tableau contenant la taille de la fenêtre (Accessible via $taille[0] et $taille[1])
Global $tailleCheck = [40, 20] ; Déclaration d'un tableau contenant la taille d'une checkbox (Accessible via $tailleCheck[0] et $tailleCheck[1])
Global $checkbox[40] ; Déclaration d'un tableau de 40 cases (les indices vont de 0 à 39)
Global $button
Global $maxX = 5
$gui = GUICreate("", $taille[0], $taille[1])
GUISetOnEvent($GUI_EVENT_CLOSE, "quit", $gui) ; On associe l'évenement "Close" (Alt+F4 / Croix rouge / echap / etc) à la fonction quit
For $i = 0 To UBound($checkbox, 1)-1 ; Itération sur toutes les cases du tableau (UBound($checkbox, 1) renvoit 40 mais les indices vont de 0 à 39 (ce qui fait 40 cases) donc il faut retirer 1 pour ne pas dépacer le tableau
$checkbox[$i] = GUICtrlCreateCheckbox($i, 5+Mod($i, $maxX)*$tailleCheck[0], 5+Floor($i/$maxX)*$tailleCheck[1], $tailleCheck[0], $tailleCheck[1]) ; Création des checkbox.
GUICtrlSetOnEvent($checkbox[$i], "clicCheck") ; Association du clic sur la checkbox créée à une fonction (cette fonction est active que si le mode evenementiel est activé)
Next
$button = GUICtrlCreateButton("Ok", 5, 5+Floor(UBound($checkbox, 1)/5)*$tailleCheck[1], 200, 20) ; Création du bouton
GUISetState(@SW_SHOW, $gui) ; Affichage de la GUI
clicCheck() ; Appel à la fonction qui active / désactive le bouton pour initialiser celui-ci
While(True)
Sleep(10)
WEnd
Func clicCheck()
Local $state = $GUI_DISABLE ; Par défaut on désactive le bouton
For $i = 0 To UBound($checkbox, 1)-1 ; On itère sur toutes les checkbox
If(GUICtrlRead($checkbox[$i]) = $GUI_CHECKED) Then ; si une checkbox est cochée
$state = $GUI_ENABLE ; On active le bouton
ExitLoop ; on quitte la boucle car "si une checkbox est cochée, on active le bouton" donc pas besoin de vérifier les autres.
EndIf
Next
GUICtrlSetState($button, $state) ; On applique réellement l'état au bouton (activer / désactiver)
EndFunc
Func quit()
Exit ; on quitte le script
EndFunc
Re: [R] Griser un bouton
Posté : mer. 04 juin 2014 13:35
par T123x3
Merci beaucoup TommyDDR!!!!