Mehrere Fenster + verlinkung

  • Also es tut mir leit das ich schon wieder nerfen muss aber ich bin langsam am verzweifeln ;(
    Ich habe jetzt 2 fenster gemacht (das die buttons nicht funktionieren ist eine sache ?( ) aber ich würde auch gerne wissen wie man es macht, das man wenn man z.b. wie bei einer installation ein fenster hat dann drückt man auf weiter dann kommt das nächste fenstern etc.

    Spoiler anzeigen
    [autoit]

    #include
    #include
    #include
    Global $Next

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

    Opt("GUIOnEventMode", 1)
    GUICreate ("Installation Ascent Server Schritt 1", 500,200)
    GUICtrlCreatePic ("src/1.jpg", 50 ,5 ,400 ,50)
    GUICtrlCreateLabel ("Willkommen zur Installation von BS1KSH Ascent WoW Server.",10,55)
    GUICtrlCreateLabel ("Dieses Installations Script wurde geschrieben von Cornfl4kes",10,70)
    GUICtrlCreateLabel ("Es wurde das Server Pack 5 Beta2 von Tyraels Ascent verwendet.", 10 ,85)
    GUICtrlCreateLabel ("Mit diesem Script wird der World of Warcraft Ascent Server auf deinem Computer/Server Eingestellt.",10,100)
    GUICtrlCreateLabel ("Um mit der Installation fort zu fahren klicke auf den Weiter Button.",10,115)
    GUICtrlCreateLabel ("Um mit die Installation zu beenden klicke auf den Beenden Button.",10,130)
    $Exit = GUICtrlCreateButton (" Beenden ", 50,150)
    $Weiter1 = GUICtrlCreateButton (" Weiter ", 380,150)
    GUICtrlCreateButton (" Visit Us ", 200,150)
    GUISetState(@SW_SHOW)
    While 1
    $msg = GUIGetMsg()
    If $msg <> 1 Then
    Select

    Case $msg = $Exit or $msg = $GUI_EVENT_CLOSE
    Exitloop
    Case $msg = $Weiter1
    GUICreate ("Installation Ascent Server Schritt 2", 500,200) ;Und hier soll dann das nächste Fenster kommen nur wie???
    EndSelect
    EndIf

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

    Wend

    [/autoit]


    Ich hoffe mir kann jemand helfen. Thx schon ma im vorraus

    Einmal editiert, zuletzt von Cornfl4kes (23. Dezember 2007 um 19:04)

  • Hi,
    wenn du mehrere Fenster hast brauchst du GUIGetMsg(1) (siehe Hilfe für mehr Informationen) und musst das z.B. so abfragen

    [autoit]

    If $Msg[0] = $GUI_EVENT_CLOSE AND $Msg[1] = $main_gui Then Exit

    [/autoit]


    entweder erstellst du immer wieder neue Objekte auf einer gleichbleibenden gui oder erstellst mehrere guis die du mit

    [autoit]

    GUISetState(@SW_Hide, $gui)

    [/autoit]

    unsichtbar machen kannst bzw wieder sichtbar mit @SW_SHOW

  • ich hatte auch schonmal das problem.
    ich hab dann alles via guictrldelete oder so gelöscht und dann die sachen mit guictrlcreate... gemacht die ich dann brauchte.

    es gibt sicher noch elegantere lösungen aber hierbei hatt man nicht das problem mit mehreren gui-handles.
    naja fiel spass beim programieren. ^^

  • Ich würds so machen:

    Spoiler anzeigen
    [autoit]

    -Gui1 erstellen
    -Gui2 erstellen
    -Gui... erstellen

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

    -Gui1 anzeigen
    While 1 ; Schleife für Gui1
    $msg = GuigetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exitloop
    EndSelect

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

    Guidelete Gui1 oder Gui1 Hide
    -Gui2 anzeigen
    While 1 ;Schleife für 2.Gui
    $msg = GuigetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exitloop
    EndSelect

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

    usw

    [/autoit]
  • ok danke für die schnelle hilfe und wie schaffe ich das dann das wenn ich auf weiter klicke dann auch ein neues fenster öffnet, weil wenn ich bei mir auf weiter klicke dann passiert garnichts.
    MFG & THX

  • mmhh bei mir hängt es gerade noch. Progandy soll ich wie da am anfang stadt gui1 erstellen dann einfach wie mein erstest Gui aussehen soll etc. ?? Und gibt es eine Befehl der die Gui`s anzeigt?
    Edit: Aso ch glaub ich habs gerallt..

    So ich noch ma ^^ also noch ma ne frage wie kann ich denn ein Gui mit seinen ganzen labels etc. zu einem Punkt zusammen fassen? Das ich dann ebn $gui1 = GUISetState(@SW_SHOW) machen kann???
    THX

    Einmal editiert, zuletzt von Cornfl4kes (23. Dezember 2007 um 17:47)

    • Offizieller Beitrag

    Warum so umständlich?

    Versuch's mal hiermit:

    Spoiler anzeigen
    [autoit]


    #Include <GUIConstants.au3>

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

    If _NextBox('Installation 1/3', 'Mit der Installation von Thunderbird fortfahren?') Then Exit

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

    If _NextBox('Installation 2/3', 'Mit der Installation von Firefox fortfahren?') Then Exit

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

    If _NextBox('Installation 3/3', 'Mit der Installation von IrfanView fortfahren?') Then Exit

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

    Func _NextBox($title, $text)
    $hOpt = Opt('GUIEventOptions')
    Opt('GUIEventOptions', 0)
    $gui = GUICreate($title, 320, 160, -1, -1, $WS_DLGFRAME)
    GUICtrlCreateLabel($text, 10, 20, 300, 80)
    GUICtrlSetFont(-1, 12, 400, 0, 'Times New Roman')
    $b1 = GUICtrlCreateButton('Abbrechen', 120, 100, 80, 20)
    $b2 = GUICtrlCreateButton('Weiter', 220, 100, 80, 20, $BS_DEFPUSHBUTTON)
    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $b1
    Opt('GUIEventOptions', $hOpt)
    GuiDelete($gui)
    Return (1)
    Case $msg = $b2
    Opt('GUIEventOptions', $hOpt)
    GuiDelete($gui)
    Return (0)
    EndSelect
    WEnd
    EndFunc

    [/autoit]
  • mmhhh ich hab es jetzt versucht hab aber immer noch das problem egla was ich anklicke nichts passiert ;( ?(

    Spoiler anzeigen
    [autoit]

    #include
    #include
    #include

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

    Opt("GUIOnEventMode", 1)
    GUICreate ("Installation Ascent Server Schritt 1", 500,200)
    GUICtrlCreatePic ("src/1.jpg", 50 ,5 ,400 ,50)
    GUICtrlCreateLabel ("Willkommen zur Installation von BS1KSH Ascent WoW Server.",10,55)
    GUICtrlCreateLabel ("Dieses Installations Script wurde geschrieben von Cornfl4kes",10,70)
    GUICtrlCreateLabel ("Es wurde das Server Pack 5 Beta2 von Tyraels Ascent verwendet.", 10 ,85)
    GUICtrlCreateLabel ("Mit diesem Script wird der World of Warcraft Ascent Server auf deinem Computer/Server Eingestellt.",10,100)
    GUICtrlCreateLabel ("Um mit der Installation fort zu fahren klicke auf den Weiter Button.",10,115)
    GUICtrlCreateLabel ("Um mit die Installation zu beenden klicke auf den Beenden Button.",10,130)
    $Exit = GUICtrlCreateButton (" Beenden ", 50,150)
    $Weiter1 = GUICtrlCreateButton (" Weiter ", 380,150)
    GUICtrlCreateButton (" Visit Us ", 200,150)
    GUISetState(@SW_SHOW)
    While 1
    $msg = GuigetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exitloop
    Case $msg = $Weiter1
    ExitLoop
    EndSelect
    WEnd

    [/autoit]


    </File.au3></Array.au3></GUIconstants.au3>

  • Danke Oscar für den versuch aber ich glaube dafür bin ich noch zu unerfahren weil ich relativ wenig davon verstehe. Was ich z.b. nicht verstehe wohin der Return befehl geht??
    Trotzdem Danke

    • Offizieller Beitrag

    Ich versuch's nochmal einfacher:

    Spoiler anzeigen
    [autoit]


    #Include <GUIConstants.au3>

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

    $text = 'Willkommen zur Installation von BS1KSH Ascent WoW Server.' & @CRLF & 'Dieses Installations Script wurde geschrieben von Cornfl4kes.' & @CRLF & 'Es wurde das Server Pack 5 Beta2 von Tyraels Ascent verwendet.' & @CRLF & 'Mit diesem Script wird der World of Warcraft Ascent Server auf deinem Computer/Server Eingestellt.'

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

    If _NextBox('Installation Ascent Server Schritt 1/3', $text) Then Exit

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

    ; hier kommt die Installation hin

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

    $text = 'Der Text für den nächsten Installationsschritt'

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

    If _NextBox('Installation Ascent Server Schritt 2/3', $text) Then Exit

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

    ; hier kommt der nächste Installationsschritt

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

    $text = 'Der Text für den nächsten Installationsschritt'

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

    If _NextBox('Installation Ascent Server Schritt 3/3', $text) Then Exit

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

    ; hier kommt der übernächste Installationsschritt

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

    ; das kannst Du endlos fortsetzen

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

    Func _NextBox($title, $text)
    $hOpt = Opt('GUIEventOptions')
    Opt('GUIEventOptions', 0)
    $gui = GUICreate($title, 380, 260, -1, -1, $WS_DLGFRAME)
    GUICtrlCreateLabel($text, 10, 10, 360, 170)
    GUICtrlSetFont(-1, 10, 400, 0, 'Times New Roman')
    $b1 = GUICtrlCreateButton('Abbrechen', 120, 190, 80, 20)
    $b2 = GUICtrlCreateButton('Weiter', 220, 190, 80, 20, $BS_DEFPUSHBUTTON)
    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $b1
    Opt('GUIEventOptions', $hOpt)
    GuiDelete($gui)
    Return (1)
    Case $msg = $b2
    Opt('GUIEventOptions', $hOpt)
    GuiDelete($gui)
    Return (0)
    EndSelect
    WEnd
    EndFunc

    [/autoit]
  • Kann mir bitte einer sagen wo hier jetzt mein fehler ist?? Es wird zwar gestartet aber es schließt sich sovort wieder.

    Spoiler anzeigen
    [autoit]

    #include
    #include
    #include

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

    Opt("GUIOnEventMode", 1)
    ;GUI 1 -------
    $gui1 = GUICreate ("Installation Ascent Server Schritt 1", 500,200)
    GUICtrlCreatePic ("src/1.jpg", 50 ,5 ,400 ,50)
    GUICtrlCreateLabel ("Willkommen zur Installation von BS1KSH Ascent WoW Server.",10,55)
    GUICtrlCreateLabel ("Dieses Installations Script wurde geschrieben von Cornfl4kes",10,70)
    GUICtrlCreateLabel ("Es wurde das Server Pack 5 Beta2 von Tyraels Ascent verwendet.", 10 ,85)
    GUICtrlCreateLabel ("Mit diesem Script wird der World of Warcraft Ascent Server auf deinem Computer/Server Eingestellt.",10,100)
    GUICtrlCreateLabel ("Um mit der Installation fort zu fahren klicke auf den Weiter Button.",10,115)
    GUICtrlCreateLabel ("Um mit die Installation zu beenden klicke auf den Beenden Button.",10,130)
    $Exit = GUICtrlCreateButton (" Beenden ", 50,150)
    $Weiter1 = GUICtrlCreateButton (" Weiter ", 380,150)
    GUICtrlCreateButton (" Visit Us ", 200,150)

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

    ;GUI 2 ---------
    $gui2 = GUICreate ("Installation Ascent Server Schritt 2", 500,200)

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

    ;#####################################################################
    $gui1 = GUISetState(@SW_SHOW)
    While 1
    $msg = GuigetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE Or $Exit
    Exitloop
    Case $msg = $Weiter1
    ExitLoop
    GUIDelete($gui1)
    EndSelect
    WEnd

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

    $gui2 = GUISetState(@SW_SHOW)
    While 1 ;Schleife für 2.Gui
    $msg = GuigetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE Or $Exit
    Exitloop
    EndSelect
    WEnd

    [/autoit]

    Ich hoffe mir kann einer helfen. Trotzdem schon ma dickes thx.
    </File.au3></Array.au3></GUIconstants.au3>

  • Danke. Jetzt hat er aber direkt das erste Gui fenster ausgelassen und das 2te Geöffnet. Also das erste komplett übersprungen. Woran kann das liegen? Code is der selbe wie der ebn nur ohne die genannten fehler ^^ .
    Vielen Dank..
    Edit: Ah ne er hat das net übersprungen sondern er hat die ganzen Labels etc. net mit dazu genommen. Dann komm ich wieder zu meiner frage wie kann ich mein gui mit den ganzen Labels buttons etc. zusammen in z.b. $Gui1 bekommen?
    MFG

    Einmal editiert, zuletzt von Cornfl4kes (23. Dezember 2007 um 18:40)

  • Du übersiehst da was :)
    Beim GuiSetState muss die gui immer mit angegeben werden !
    GUISetState(@SW_SHOW,$gui1)
    ...
    GUISetState(@SW_SHOW,$gui2)

  • Oh man ich werd noch verück :D . Jetzt kann ich wieder alles drücken aber nichts passiert. ?(

    Spoiler anzeigen
    [autoit]

    GUISetState(@SW_SHOW,$gui1)
    While 1
    $msg = GuigetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE Or $msg = $Exit
    Exitloop
    Case $msg = $Weiter1
    ExitLoop
    GUIDelete($gui1)
    EndSelect
    WEnd

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

    GUISetState(@SW_SHOW,$gui2)
    While 1 ;Schleife für 2.Gui
    $msg = GuigetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE Or $msg = $Exit
    Exitloop
    EndSelect
    WEnd

    [/autoit]

    Danke für die Hilfe :thumbup:

  • Ach, da hab ich noch was vergessen, dir zu sagen:
    Opt("GUIOnEventMode", 1)
    Das muss 0 sein oder ganz raus, da du im Schleifenmodus arbeitest und nicht im Event-Modus