Moin mOin
wollte mal fragen wie man wa hinbekommt dasn ein Button erst einen Neue Gui Erstellt , und dan auch dieselbe Gui wieder schließt wen man auf den button drückt .
-also erstesmal öffnets die Gui wen die Gui offen ist und man drückt wieder auf diesen Button schließt sich die geöffnete Gui.
Button Problem
-
- [ gelöst ]
-
Secret1994 -
13. März 2010 um 13:24 -
Geschlossen -
Erledigt
-
-
Hallo Secret1994,
sicher ist das möglich. Ich würde zuerst alle GUIs anlegen und diese GUI HIDEn. Du definierst eine GLOBALe Variable z.B. $toggle mit Wert FALSE. Beim Buttonklick prüfst du diese Variable und setzt abhängig von ihr mit GUISETSTATE den Status auf @SW_SHOW bzw. @SW_HIDE. Danach weisst du der Variable den gegnteiligen Wert zu:
[autoit]$toggle = not $toggle
[/autoit]mfg (Auto)Bert
-
Hier ein einfaches Beispiel
Spoiler anzeigen
[autoit]#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>$Form1 = GUICreate("Main", 200, 50)
[/autoit] [autoit][/autoit] [autoit]
$Button1 = GUICtrlCreateButton("anzeigen", 8, 8, 153, 25, $WS_GROUP)
GUISetState(@SW_SHOW, $Form1)$Form2 = GUICreate("Fenster2", 100, 100, 0, 0)
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_HIDE, $Form2)
$anzeige = FalseWhile 1
[/autoit]
$nMsg = GUIGetMsg(1)
Switch $nMsg[1]
Case $Form1
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
If $anzeige Then
GUISetState(@SW_HIDE, $Form2)
Else
GUISetState(@SW_SHOW, $Form2)
EndIf
$anzeige = Not $anzeige
EndSwitch
Case $Form2
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
GUISetState(@SW_HIDE, $Form2)
$anzeige = False
EndSwitch
EndSwitch
WEndEdit: Da hatten wir wohl die gleiche Idee Autobert
-
könnte mir einer noch das zusammensetzen weil bei mir kommt zwar kein fehler aber wen ich button drücke gehn mnche nicht und andere verzögert.
Spoiler anzeigen
[autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$Msg = GUIGetMsg(1)
Switch $nMsg[1]
Case $Form1
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
Exit
Case $Button6
If $anzeige Then
GUISetState(@SW_HIDE, $Form2)
Else
GUISetState(@SW_SHOW, $Form2)
EndIf
$anzeige = Not $anzeige
EndSwitch
Case $Form2
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
GUISetState(@SW_HIDE, $Form2)
$anzeige = False
EndSwitch
EndSwitch
While$msg = GUIGetMsg()
[/autoit] [autoit][/autoit] [autoit]
Select
Case $msg = $Button4
ExitCase $msg = $Button7
[/autoit] [autoit][/autoit] [autoit]
ExitCase $msg = $Button8
[/autoit] [autoit][/autoit] [autoit]
ExitCase $msg = $GUI_EVENT_CLOSE
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Exit
EndSelectWEnd
[/autoit] -
warum hast du alles doppelt? 2x while 2x Guigetmsg 2x Ne mehrfachauswahl (switch und select)
nochmal zu meinem beispiel:
Spoiler anzeigen
[autoit]$Form1 = GUICreate("Main", 200, 50)
[/autoit] [autoit][/autoit] [autoit]
$Button1 = GUICtrlCreateButton("anzeigen", 8, 8, 153, 25, $WS_GROUP)
GUISetState(@SW_SHOW, $Form1)$Form2 = GUICreate("Fenster2", 100, 100, 0, 0)
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_HIDE, $Form2)
$anzeige = FalseWhile 1
[/autoit]
$nMsg = GUIGetMsg(1); erweiterte Guigetmsg modus für mehrere fenster
Switch $nMsg[1]; auf welchem fenster wurde etwas geklickt
Case $Form1; wenn auf fenster 1 dann:
Switch $nMsg[0]; was wurde geklickt
Case $GUI_EVENT_CLOSE; schließen auf fenster 1
Exit
Case $Button1
If $anzeige Then
GUISetState(@SW_HIDE, $Form2)
Else
GUISetState(@SW_SHOW, $Form2)
EndIf
$anzeige = Not $anzeige
EndSwitch; bis hier hin ist alles auf dem ersten fenster
Case $Form2; wurde etwas auf fenster 2 geklickt
Switch $nMsg[0]; was wurde geklickt?
Case $GUI_EVENT_CLOSE; schließen auf fenster 2
GUISetState(@SW_HIDE, $Form2)
$anzeige = False
EndSwitch
EndSwitch
WEnd -
Hallo secret1994
du hast 2 Schleifen mit GuiGetMsg, eine davon ist überflüssig / schädlich.
Poste doch bitte das komplette Skript,mfg (Auto)Bert
-
Spoiler anzeigen
[autoit]#include <ButtonConstants.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>Global $pic1 = 'C:\\Pictures\Teil1.bmp' ;Info
[/autoit] [autoit][/autoit] [autoit]
Global $pic2 = 'C:\\Pictures\Status.bmp' ;Status
Global $pic3 = 'C:\\Pictures\Inventar.bmp' ;Inventar
Global $pic4 = 'C:\\Pictures\Fertigkeiten.bmp' ;Fertigkeit
Global $pic5 = 'C:\\Pictures\Einstellungen.bmp' ;einstellungen
Global $pic6 = 'C:\\Pictures\inventar.bmp' ;einstellungen
Global $pic7 = 'C:\\Pictures\exitbutton.bmp' ;einstellungen#Region ### START Koda GUI section ### Form=
[/autoit] [autoit][/autoit] [autoit]
$Form1 = GUICreate("Form1", 1023, 752, 466, 114)
$Button4 = GUICtrlCreatePic($pic2, 879, 718, 32, 32);Status
$Button6 = GUICtrlCreatePic($pic3, 913, 718, 32, 32);Inventar
$Button7 = GUICtrlCreatePic($pic4, 947, 718, 32, 32) ;Fertigkeit
$Button8 = GUICtrlCreatePic($pic5, 981, 718, 32, 32);einstellungen
$Button1 = GUICtrlCreatePic($pic1, 0, 660, 1023, 92);InfoGUISetState(@SW_SHOW, $Form1)
[/autoit] [autoit][/autoit] [autoit]$Form2 = GUICreate("1", 172, 561,Default,Default,$WS_DLGFRAME)
[/autoit] [autoit][/autoit] [autoit]
$inventare_exit = GUICtrlCreatePic($pic7,150,7,16,16)
$inventare = GUICtrlCreatePic($pic6,0,0,172, 561)
GUISetState(@SW_HIDE, $Form2)
$anzeige = False
#EndRegion ### END Koda GUI section ###While 1
[/autoit] [autoit][/autoit] [autoit]
$Msg = GUIGetMsg(1)
Switch $nMsg[1]
Case $Form1
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
Exit
Case $Button6
If $anzeige Then
GUISetState(@SW_HIDE, $Form2)
Else
GUISetState(@SW_SHOW, $Form2)
EndIf
$anzeige = Not $anzeige
EndSwitch
Case $Form2
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
GUISetState(@SW_HIDE, $Form2)
$anzeige = False
EndSwitch
EndSwitch
While$msg = GUIGetMsg()
[/autoit] [autoit][/autoit] [autoit]
Select
Case $msg = $Button4
ExitCase $msg = $Button7
[/autoit] [autoit][/autoit] [autoit]
ExitCase $msg = $Button8
[/autoit] [autoit][/autoit] [autoit]
ExitCase $msg = $GUI_EVENT_CLOSE
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Exit
EndSelectWEnd
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] -
So sollte es gehn:
Spoiler anzeigen
[autoit]#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>Global $pic1 = 'C:\\Pictures\Teil1.bmp' ;Info
[/autoit] [autoit][/autoit] [autoit]
Global $pic2 = 'C:\\Pictures\Status.bmp' ;Status
Global $pic3 = 'C:\\Pictures\Inventar.bmp' ;Inventar
Global $pic4 = 'C:\\Pictures\Fertigkeiten.bmp' ;Fertigkeit
Global $pic5 = 'C:\\Pictures\Einstellungen.bmp' ;einstellungen
Global $pic6 = 'C:\\Pictures\inventar.bmp' ;einstellungen
Global $pic7 = 'C:\\Pictures\exitbutton.bmp' ;einstellungen#region ### START Koda GUI section ### Form=
[/autoit] [autoit][/autoit] [autoit]
$Form1 = GUICreate("Form1", 1023, 752, 466, 114)
$Button4 = GUICtrlCreatePic($pic2, 879, 718, 32, 32);Status
$Button6 = GUICtrlCreatePic($pic3, 913, 718, 32, 32);Inventar
$Button7 = GUICtrlCreatePic($pic4, 947, 718, 32, 32) ;Fertigkeit
$Button8 = GUICtrlCreatePic($pic5, 981, 718, 32, 32);einstellungen
$Button1 = GUICtrlCreatePic($pic1, 0, 660, 1023, 92);InfoGUISetState(@SW_SHOW, $Form1)
[/autoit] [autoit][/autoit] [autoit]$Form2 = GUICreate("1", 172, 561, Default, Default, $WS_DLGFRAME)
[/autoit] [autoit][/autoit] [autoit]
$inventare_exit = GUICtrlCreatePic($pic7, 150, 7, 16, 16)
$inventare = GUICtrlCreatePic($pic6, 0, 0, 172, 561)
GUISetState(@SW_HIDE, $Form2)
$anzeige = False
#endregion ### END Koda GUI section ###While 1
[/autoit]
$nMsg = GUIGetMsg(1)
Switch $nMsg[1]
Case $Form1
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
Exit
Case $Button6
If $anzeige Then
GUISetState(@SW_HIDE, $Form2)
Else
GUISetState(@SW_SHOW, $Form2)
EndIf
$anzeige = Not $anzeige
Case $Button4
Exit
Case $Button7
Exit
Case $Button8
Exit
EndSwitch
Case $Form2
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
GUISetState(@SW_HIDE, $Form2)
$anzeige = False
EndSwitch
EndSwitch
WEnd -
Perfekt das habe ich also falschgemacht naja danke dir und den anderen