Button Problem

  • 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.

    Einmal editiert, zuletzt von Secret1994 (13. März 2010 um 14:16)

  • 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>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $Form1 = GUICreate("Main", 200, 50)
    $Button1 = GUICtrlCreateButton("anzeigen", 8, 8, 153, 25, $WS_GROUP)
    GUISetState(@SW_SHOW, $Form1)

    [/autoit] [autoit][/autoit] [autoit]

    $Form2 = GUICreate("Fenster2", 100, 100, 0, 0)
    GUISetState(@SW_HIDE, $Form2)
    $anzeige = False

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $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
    WEnd

    [/autoit]

    Edit: Da hatten wir wohl die gleiche Idee Autobert :D

  • 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
    $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

    [/autoit] [autoit][/autoit] [autoit]

    $msg = GUIGetMsg()
    Select
    Case $msg = $Button4
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Case $msg = $Button7
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Case $msg = $Button8
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/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)
    $Button1 = GUICtrlCreateButton("anzeigen", 8, 8, 153, 25, $WS_GROUP)
    GUISetState(@SW_SHOW, $Form1)

    [/autoit] [autoit][/autoit] [autoit]

    $Form2 = GUICreate("Fenster2", 100, 100, 0, 0)
    GUISetState(@SW_HIDE, $Form2)
    $anzeige = False

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $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

    [/autoit]
  • Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Global $pic1 = 'C:\\Pictures\Teil1.bmp' ;Info
    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

    [/autoit] [autoit][/autoit] [autoit]

    #Region ### START Koda GUI section ### Form=
    $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);Info

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW, $Form1)

    [/autoit] [autoit][/autoit] [autoit]

    $Form2 = GUICreate("1", 172, 561,Default,Default,$WS_DLGFRAME)
    $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 ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $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

    [/autoit] [autoit][/autoit] [autoit]

    $msg = GUIGetMsg()
    Select
    Case $msg = $Button4
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Case $msg = $Button7
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Case $msg = $Button8
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
  • So sollte es gehn:

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $pic1 = 'C:\\Pictures\Teil1.bmp' ;Info
    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

    [/autoit] [autoit][/autoit] [autoit]

    #region ### START Koda GUI section ### Form=
    $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);Info

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW, $Form1)

    [/autoit] [autoit][/autoit] [autoit]

    $Form2 = GUICreate("1", 172, 561, Default, Default, $WS_DLGFRAME)
    $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 ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $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

    [/autoit]