2 GUI Fenster in einem script

  • Hallo erstmal,
    ich hätte gern ein zweites gui in meinem script, nur wenn ich das zweite aufrufe, lässt es sich nicht mehr schliessen und das erste reagiert auch nichtmehr.
    hier ein beispiel:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    GUICreate("test")
    $bttn = GUICtrlCreateButton("Test",0,0)
    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $bttn
    GUICreate("test2")
    GUISetState()
    While 1
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    EndSelect
    WEnd
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    EndSelect
    WEnd

    [/autoit]


    Wäre nett, wenn jemadn da weiter weiss, ich weiss da nicht mehr weiter ?(

    Mfg. PCKing


    Mein PC

    CPU: AMD FX 8350 8x4.00GHz
    Ram: 8GB DDR3
    Grafikkarte: Nvidia Geforce GTX 960 (4GB)
    Festplatten: 500GB SSD 1TB HDD
    Laufwerk: Blueray RW+ Brenner

  • mit 2 guis brauchst du den erweiterten guigetmessage mode

    hier n beispiel das irgendwo im forum rumlag ;)

    [autoit]

    #include <GUIConstantsEx.au3>
    $gui1 = GUICreate('GUI 1', 500, 300, -1, -1)
    $button1 = GUICtrlCreateButton('Aufruf GUI 2', 20, 20, 100, 21)

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

    $gui2 = GUICreate('GUI 2', 500, 300, -1, -1)
    $button2 = GUICtrlCreateButton('Zurück zu GUI 1', 20, 20, 100, 21)

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

    GUISetState(@SW_SHOW, $gui1)

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

    While 1
    $msg = GUIGetMsg(1)
    Switch $msg[1] ; window-handle
    Case $gui1
    Switch $msg[0] ; event/control-handle
    Case $button1
    GUISetState(@SW_HIDE, $gui1)
    GUISetState(@SW_SHOW, $gui2)
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    Case $gui2
    Switch $msg[0]
    Case $button2
    GUISetState(@SW_SHOW, $gui1)
    GUISetState(@SW_HIDE, $gui2)
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_SHOW, $gui1)
    GUISetState(@SW_HIDE, $gui2)
    EndSwitch
    EndSwitch
    WEnd

    [/autoit]
  • Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    $GUI1 = GUICreate("test")
    $bttn = GUICtrlCreateButton("Test",0,0)
    GUISetState()

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

    $GUI2 = GUICreate("test2")

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

    While 1
    $msg = GUIGetMsg(1)
    Switch $msg[0]
    Case $bttn
    GUISetState(@SW_SHOW,$GUI2)
    Case $GUI_EVENT_CLOSE
    Switch $msg[1]
    Case $GUI1
    Exit
    Case $GUI2
    GUISetState(@SW_HIDE,$GUI2)
    EndSwitch
    EndSwitch
    WEnd

    [/autoit]

    In deinem Script hast du eine While Schleife gestartet, in der du aber nicht den neuen GUIGetMsg Status abgefragt hast. Hier meine Version. Ich habe das GUI schon am scriptstart erstellen lassen, und lasse es bei einem klick auf den Button nur das 2te GUI anzeigen (@SW_SHOW..). Desweiteren habe ich den erweiterten GUIGetMsg()-Mode verwendet, um GUI2 unabhängig vom ersten GUI schließen zu können.


    //Edit : arrrgh. Ich sollte weniger erklären dann wär ich auch schneller :rofl:

  • ich habs dir mal geschrieben wenn du etwas nicht verstehst sag bescheit ;)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ButtonConstants.au3>

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

    $HauptFenster = GUICreate("HauptFenster", 200, 50)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetState(@SW_SHOW,$HauptFenster)

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

    $Baum = GUICtrlCreateButton("Baum Einstellungen",10,10,100,20)

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

    Start()

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

    Func Start()
    While 1
    $msg = GUIGetMsg()
    Select

    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $Baum
    GUISetState(@SW_HIDE,$HauptFenster)
    baumfrage()

    EndSelect
    WEnd

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

    EndFunc


    Func baumfrage()

    $BaummeisterFenster = GUICreate("Baum Einstellungen", 200, 100)
    GUISetState(@SW_SHOW,$BaummeisterFenster)
    GUICtrlCreateLabel("hat der baum blätter ? ?:",10,10)
    $BaummeisterFensterJa = GUICtrlCreateButton("ja",10,50,80,30)
    $BaummeisterFensterNein = GUICtrlCreateButton("nein",100,50,80,30)

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE,$BaummeisterFenster)
    GUISetState(@SW_SHOW,$HauptFenster)
    Return
    Case $msg = $BaummeisterFensterJa
    GUISetState(@SW_HIDE,$BaummeisterFenster)
    GUISetState(@SW_SHOW,$HauptFenster)
    Return
    Case $msg = $BaummeisterFensterNein
    GUISetState(@SW_HIDE,$BaummeisterFenster)
    GUISetState(@SW_SHOW,$HauptFenster)
    Return
    EndSelect
    WEnd

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

    EndFunc

    [/autoit]
  • danke an euch, es hat geklappt, ihr seid super :D

    Mfg. PCKing


    Mein PC

    CPU: AMD FX 8350 8x4.00GHz
    Ram: 8GB DDR3
    Grafikkarte: Nvidia Geforce GTX 960 (4GB)
    Festplatten: 500GB SSD 1TB HDD
    Laufwerk: Blueray RW+ Brenner

  • Ich muss hier gerade mal bischen Leichenschändung betreiben. Habe gerade eine ähnliche Problematik ide ich versuche zu lösen. Mit 2 GUIs klappt es perfekt, mit dreien aber nicht mehr. Was muss ich da noch ändern, damit das funktioniert?

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    $GUI1 = GUICreate("Form1", 634, 361, 192, 114)
    $Label1 = GUICtrlCreateLabel("Suchbegriff:", 16, 16, 61, 17)
    $Beispieltext = GUICtrlCreateInput("Beispieltext", 16, 37, 145, 21)
    $Combo1 = GUICtrlCreateCombo("Auswählen", 16, 96, 145, 25)
    GUICtrlSetData(-1, "Alphabetisch|Nach Thema|Nach Kategorie")
    $Label2 = GUICtrlCreateLabel("Sortieren nach:", 16, 72, 76, 17)
    $List1 = GUICtrlCreateList("", 208, 24, 409, 292)
    GUICtrlSetData(-1, "")
    $Anzeigen = GUICtrlCreateButton("Anzeigen", 208, 320, 75, 25, $WS_GROUP)
    $Bearbeiten = GUICtrlCreateButton("Bearbeiten", 288, 320, 75, 25, $WS_GROUP)
    $Entfernen = GUICtrlCreateButton("Entfernen", 544, 320, 75, 25, $WS_GROUP)
    $Label3 = GUICtrlCreateLabel("Gefundene Einträge", 208, 8, 99, 17)
    $Button1 = GUICtrlCreateButton("Erstellen", 464, 320, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)

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

    $GUI2 = GUICreate("Form1", 683, 542, 616, 257)
    $Edit1 = GUICtrlCreateEdit("", 0, 0, 681, 505)
    GUICtrlSetData(-1, "Edit1")
    $Speichern = GUICtrlCreateButton("Speichern", 0, 512, 75, 25, $WS_GROUP)
    $Button1 = GUICtrlCreateButton("Schliessen", 80, 512, 75, 25, $WS_GROUP)
    GUISetState(@SW_HIDE)

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

    $GUI3 = GUICreate("Form1", 684, 589, 392, 171)
    $Beschreibung = GUICtrlCreateEdit("", 0, 48, 681, 505)
    GUICtrlSetData(-1, "Edit1")
    $Erstellen = GUICtrlCreateButton("Erstellen", 0, 560, 75, 25, $WS_GROUP)
    $Abbrechen = GUICtrlCreateButton("Abbrechen", 80, 560, 75, 25, $WS_GROUP)
    $Them = GUICtrlCreateLabel("Thema", 0, 3, 37, 17)
    $Thema = GUICtrlCreateInput("Thema wählen", 0, 24, 217, 21)
    $Kategorie = GUICtrlCreateInput("Kategorie wählen", 224, 24, 121, 21)
    $Label2 = GUICtrlCreateLabel("Kategorie", 224, 3, 49, 17)
    GUISetState(@SW_HIDE)

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

    While 1
    $msg = GUIGetMsg(1)
    Switch $msg[0]
    Case $Anzeigen
    GUISetState(@SW_SHOW, $GUI2)
    Case $Erstellen
    GUISetState(@SW_SHOW, $GUI3)
    Case $GUI_EVENT_CLOSE
    Switch $msg[1]
    Case $GUI1
    Exit
    Case $GUI2
    GUISetState(@SW_HIDE,$GUI2)
    Case $GUI3
    GUISetState(@SW_HIDE,$GUI3)
    EndSwitch
    EndSwitch
    WEnd

    [/autoit]

  • Du hast deinen Erstellbutton in Gui1 "$Button1 = GUICtrlCreateButton("Erstellen", 464, 320, 75, 25, $WS_GROUP)" genannt ,
    der "$Erstellen" button ist aber in Gui3....
    Hier richtig:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    $GUI1 = GUICreate("Form1", 634, 361, 192, 114)
    $Label1 = GUICtrlCreateLabel("Suchbegriff:", 16, 16, 61, 17)
    $Beispieltext = GUICtrlCreateInput("Beispieltext", 16, 37, 145, 21)
    $Combo1 = GUICtrlCreateCombo("Auswählen", 16, 96, 145, 25)
    GUICtrlSetData(-1, "Alphabetisch|Nach Thema|Nach Kategorie")
    $Label2 = GUICtrlCreateLabel("Sortieren nach:", 16, 72, 76, 17)
    $List1 = GUICtrlCreateList("", 208, 24, 409, 292)
    GUICtrlSetData(-1, "")
    $Anzeigen = GUICtrlCreateButton("Anzeigen", 208, 320, 75, 25, $WS_GROUP)
    $Bearbeiten = GUICtrlCreateButton("Bearbeiten", 288, 320, 75, 25, $WS_GROUP)
    $Entfernen = GUICtrlCreateButton("Entfernen", 544, 320, 75, 25, $WS_GROUP)
    $Label3 = GUICtrlCreateLabel("Gefundene Einträge", 208, 8, 99, 17)
    $Erstellen = GUICtrlCreateButton("Erstellen", 464, 320, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)

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

    $GUI2 = GUICreate("Form2", 683, 542, 616, 257)
    $Edit1 = GUICtrlCreateEdit("", 0, 0, 681, 505)
    GUICtrlSetData(-1, "Edit1")
    $Speichern = GUICtrlCreateButton("Speichern", 0, 512, 75, 25, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Schliessen", 80, 512, 75, 25, $WS_GROUP)
    GUISetState(@SW_HIDE)

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

    $GUI3 = GUICreate("Form3", 684, 589, 392, 171)
    $Beschreibung = GUICtrlCreateEdit("", 0, 48, 681, 505)
    GUICtrlSetData(-1, "Edit1")
    $Erstellenx = GUICtrlCreateButton("Erstellen", 0, 560, 75, 25, $WS_GROUP)
    $Abbrechen = GUICtrlCreateButton("Abbrechen", 80, 560, 75, 25, $WS_GROUP)
    $Them = GUICtrlCreateLabel("Thema", 0, 3, 37, 17)
    $Thema = GUICtrlCreateInput("Thema wählen", 0, 24, 217, 21)
    $Kategorie = GUICtrlCreateInput("Kategorie wählen", 224, 24, 121, 21)
    $Lab14 = GUICtrlCreateLabel("Kategorie", 224, 3, 49, 17)
    GUISetState(@SW_HIDE)

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

    While 1
    $msg = GUIGetMsg(1)
    Switch $msg[0]
    Case $Anzeigen
    GUISetState(@SW_SHOW, $GUI2)
    Case $Erstellen
    GUISetState(@SW_SHOW, $GUI3)
    Case $GUI_EVENT_CLOSE
    Switch $msg[1]
    Case $GUI1
    Exit
    Case $GUI2
    GUISetState(@SW_HIDE,$GUI2)
    Case $GUI3
    GUISetState(@SW_HIDE,$GUI3)
    EndSwitch
    EndSwitch
    WEnd

    [/autoit]

    PS: Achte doch auf die namen der Labels , buttons etc. nähmlich in deinem (habe ich korrigiert) script waren mehrere
    gleichnamige variablen...


  • Ok, ich bin ein Idiot :) Danke, war ein blöder Fehler. Ja, auf die Namensgebung werde ich in Zukunft verschärft drauf achten. Ich habe die GUIs einzelnd in KODA erstellt, daher die doppelten namen.