Page 1 sur 1
[R] Bouton qui en fait un autre
Posté : lun. 21 févr. 2011 17:43
par Xtend
Bonjour,
J'aimerais faire dans ma GUI un bouton qui, quand on clique dessus, "s'efface" et crée un autre bouton sur cette même fenêtre.
Voici mon code (qui ne marche pas car les deux boutons apparaissent directement).
► Afficher le texte
#include <GDIPlus.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <ButtonConstants.au3>
#include <StaticConstants.au3>
$gui = GUICreate("", 700, 500)
GUISetState(@SW_SHOW)
While 1
$msg1 = GUIGetMsg()
$Btn1 = GUICtrlCreateButton("Bouton", 50, 50, 150, 150)
$Btn2 = GUICtrlCreateButton("Bouton2", 150, 50, 150, 150)
Select
Case $msg1=$Btn1
GUISetState(@SW_HIDE, $Btn1)
GUISetState(@SW_SHOW, $Btn2)
EndSelect
WEnd
Ou est mon erreur ?
Il y a-t-il une autre méthode meilleure ?
Re: [..] Bouton qui en fait un autre
Posté : lun. 21 févr. 2011 17:59
par GaRydelaMer
Bonsoir
la bonne fonction avec les contrôles:
Code : Tout sélectionner
GUICtrlSetState($Bt1, $GUI_HIDE)
GUICtrlSetState($Bt2, $GUI_SHOW)
;~ ou en mixant les différents états
GUICtrlSetState($Bt1, $GUI_HIDE + $GUI_DISABLE))
GUICtrlSetState($Bt2, $GUI_SHOW + $GUI_ENABLE + $GUI_FOCUS))
Re: [..] Bouton qui en fait un autre
Posté : lun. 21 févr. 2011 19:14
par FernandG
Bonsoir,
GarydelaMer vous a donné la solution. Néanmoins, votre code contient quelques étourderies.
Une légère correction dans le code ci-contre :
► Afficher le texte
Code : Tout sélectionner
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
$gui = GUICreate("", 150, 60)
$Btn1 = GUICtrlCreateButton("Bouton 1", 10, 20, 60, 22)
$Btn2 = GUICtrlCreateButton("Bouton 2", 80, 20, 60, 22)
GUICtrlSetState(-1, $GUI_HIDE)
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
Select
Case $msg = $Btn1
GUICtrlSetState($Btn1, $GUI_HIDE)
GUICtrlSetState($Btn2, $GUI_SHOW)
Case $msg = $Btn2
GUICtrlSetState($Btn1, $GUI_SHOW)
GUICtrlSetState($Btn2, $GUI_HIDE)
Case $msg = $GUI_EVENT_CLOSE
Exit
EndSelect
WEnd
Bonné soirée.
Re: [..] Bouton qui en fait un autre
Posté : mar. 22 févr. 2011 10:17
par Xtend
Ok, merci ça marche et en plus, j'ai compris mon erreur.
Merci à vous deux

Re: [..] Bouton qui en fait un autre
Posté : mar. 22 févr. 2011 11:40
par TommyDDR
Pensez à changer le titre de votre 1er post en [R]

Re: [R] Bouton qui en fait un autre
Posté : mar. 22 févr. 2011 12:02
par Xtend
Ah oui, j'avais oublié ^^
Merci encore

Re: [R] Bouton qui en fait un autre
Posté : mar. 22 févr. 2011 13:31
par zeshrek
je sais bien que c'est résolu, mais plutot que de jouer a cache-cache avec les bouttons, on peut en avoir un seul dont on change le texte pour les utilisateurs et le traitement
► Afficher le texte
Code : Tout sélectionner
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
Dim $BtnLbl[2]
$BtnLbl[0] = "Boutton1"
$BtnLbl[1] = "Boutton2"
$BtnStatus = 0
$gui = GUICreate("", 150, 60)
$Btn1 = GUICtrlCreateButton($BtnLbl[$BtnStatus], 10, 20, 60, 22)
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
Select
Case $msg = $Btn1
Switch $BtnStatus
Case 0
boutton1()
Case 1
boutton2()
EndSwitch
$BtnStatus = Abs(not ($BtnStatus * 2))
GUICtrlSetData($Btn1, $BtnLbl[$BtnStatus])
Case $msg = $GUI_EVENT_CLOSE
Exit
EndSelect
WEnd
Func boutton1()
MsgBox(0, "Controle du boutton", "Vous venez d'appuyer sur le boutton N° 1" & @CRLF _
& "Il va maintenant passer en version N° 2")
EndFunc ;==>boutton1
Func boutton2()
MsgBox(0, "Controle du boutton", "Vous venez d'appuyer sur le boutton N° 2" & @CRLF _
& "Il va maintenant passer en version N° 1")
EndFunc ;==>boutton2
Re: [R] Bouton qui en fait un autre
Posté : mar. 22 févr. 2011 17:26
par Xtend
Merci zeshrek pour ton code.
Cependant, j'ai déjà fais une bonne partie de mon code et même si ton code à l'air très bien (mieux que le cache-cache que je fais actuellement ^^), je vais rester sur le cache-cache, beaucoup plus simple pour un novice comme moi
Mais je le garde au cas où pour mon prochain script
