Gui switchen.

  • Hi Leute..

    ich habe wieder mal ein "Anfänger Problem"
    folgendes ich möchte als erstes so eine Art Vorwort Gui machen.
    Wenn man dann auf Weiter klickt gelangt man zur nächsten Gui mit neuen
    Funktionen.

    [autoit]

    #include <GuiconstantsEx.au3>
    #include <ButtonConstants.au3>
    GUICreate("Ein Gui Name", 320, 380)
    GUISetBkColor(0xcdcdcd)
    GUICtrlCreatePic("C:\abc.jpg", 0, 0, 320, 70)
    $Button1 = Guictrlcreatebutton("Weiter", 220, 330, 90, 30)
    GUISetState(@SW_Show)

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

    GUICreate("Ein Gui Name", 320, 380)
    GUISetBkColor(0xcdcdcd)
    GUICtrlCreatePic("C:\abc.jpg", 0, 0, 320, 70)

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

    GUICtrlCreateLabel("Ein Checkbox Name", 23, 100)
    GUICtrlCreateInput("", 23, 120, 170, 18)

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

    GUICtrlCreateLabel("Ein Checkbox Name", 45, 218)
    GUICtrlCreateCheckbox("Ein Label", 23, 218, 15, 15)

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

    GUICtrlCreateCheckbox("Ein Checkbox Name", 23, 240, 15, 15)
    GUICtrlCreateLabel("Ein Label", 45, 240)

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

    GUICtrlCreateCheckbox("Ein Checkbox Name", 23, 262, 15, 15)
    GUICtrlCreateLabel("ICQ Kontaktliste beseitigen", 45, 262)

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

    GUICtrlCreateCheckbox("Ein Checkbox Name", 23, 284, 15, 15)
    GUICtrlCreateLabel("Ein Label", 45, 284)

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

    GUICtrlCreateCheckbox("Ein Checkbox Name", 23, 306, 15, 15)
    Guictrlcreatelabel("Ein Label", 45, 306)

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

    GUISetState(@SW_Show)

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

    While 1
    $msg = GUIGetMsg()

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

    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    EndSelect
    WEnd

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

    die Frage is jetzt ^^...wie teile ich dem Button die Funktion zu zur nächsten GUI zu wechseln?
    hat jemand Vorschläge? Wäre euch sehr verbunden bin nämlich ein ganz schöner Nap was
    sowas angeht -.-

    ;)

    mfg

    Einmal editiert, zuletzt von JoKe1²3 (27. Oktober 2009 um 14:25)

    • Offizieller Beitrag

    Mal ein Bsp:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Local $gui1, $gui2, $gui3, $gui4, $gui5, $btn1_1, $btn1_2, $btn1_3, $btn1_4, $btn2, $btn3, $btn4, $btn5, $msg

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

    $gui1 = GUICreate('GUI 1')
    $btn1_1 = GUICtrlCreateButton('Zeige GUI 2', 10, 20, 100, 20)
    $btn1_2 = GUICtrlCreateButton('Zeige GUI 3', 10, 50, 100, 20)
    $btn1_3 = GUICtrlCreateButton('Zeige GUI 4', 10, 80, 100, 20)
    $btn1_4 = GUICtrlCreateButton('Zeige GUI 5', 10, 110, 100, 20)

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

    $gui2 = GUICreate('GUI 2')
    $btn2 = GUICtrlCreateButton('Button 2', 10, 20, 100, 20)

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

    $gui3 = GUICreate('GUI 3')
    $btn3 = GUICtrlCreateButton('Button 3', 10, 20, 100, 20)

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

    $gui4 = GUICreate('GUI 4')
    $btn4 = GUICtrlCreateButton('Button 4', 10, 20, 100, 20)

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

    $gui5 = GUICreate('GUI 5')
    $btn5 = GUICtrlCreateButton('Button 5', 10, 20, 100, 20)

    [/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
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $btn1_1
    GUISetState(@SW_HIDE, $gui1)
    GUISetState(@SW_SHOW, $gui2)
    Case $btn1_2
    GUISetState(@SW_HIDE, $gui1)
    GUISetState(@SW_SHOW, $gui3)
    Case $btn1_3
    GUISetState(@SW_HIDE, $gui1)
    GUISetState(@SW_SHOW, $gui4)
    Case $btn1_4
    GUISetState(@SW_HIDE, $gui1)
    GUISetState(@SW_SHOW, $gui5)
    EndSwitch
    Case $gui2
    Switch $msg[0]
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_SHOW, $gui1)
    GUISetState(@SW_HIDE, $gui2)
    Case $btn2
    MsgBox(0, '', 'Button 2 geklickt')
    EndSwitch
    Case $gui3
    Switch $msg[0]
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_SHOW, $gui1)
    GUISetState(@SW_HIDE, $gui3)
    Case $btn3
    MsgBox(0, '', 'Button 3 geklickt')
    EndSwitch
    Case $gui4
    Switch $msg[0]
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_SHOW, $gui1)
    GUISetState(@SW_HIDE, $gui4)
    Case $btn4
    MsgBox(0, '', 'Button 4 geklickt')
    EndSwitch
    Case $gui5
    Switch $msg[0]
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_SHOW, $gui1)
    GUISetState(@SW_HIDE, $gui5)
    Case $btn5
    MsgBox(0, '', 'Button 5 geklickt')
    EndSwitch
    EndSwitch
    WEnd

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

    GUIDelete($gui1)
    GUIDelete($gui2)
    GUIDelete($gui3)
    GUIDelete($gui4)
    GUIDelete($gui5)

    [/autoit]
  • Also Mensch danke für deine Antwort !!!
    das du das so in paar minuten hingezaubert hast is echt stark ^^
    ich schau mir den code dann mal und und schau was du da schönes gemacht hast :)
    danke nochmal !!

    EDIT:\\ koenntest du mir erklären was es mit dem Local & die Aufzählungen der Variablen
    auf sich hat? Also um das unbedingt sein muss?

    • Offizieller Beitrag

    das du das so in paar minuten hingezaubert hast is echt stark

    :D
    Also ich könnte es auch in ein..zwei Minuten schreiben, aber sowas habe ich als Skriptbeispiel in meiner "Bibliothek" ;)
    Da reicht dann Copy & Paste.


    EDIT:\\ koenntest du mir erklären was es mit dem Local & die Aufzählungen der Variablen
    auf sich hat? Also um das unbedingt sein muss?

    Man sollte sich eigentlich von Anfang an daram gewöhnen, alle Variablen zu deklarieren. Und das passiert mit dem Wort Local. Näheres zu den Arten der Deklaration findest du in der Hilfe unter "Local, Global, Dim".

  • Zitat

    Also ich könnte es auch in ein..zwei Minuten schreiben, aber sowas habe ich als Skriptbeispiel in meiner "Bibliothek" ;)
    Da reicht dann Copy & Paste.

    verstehe :D...das ist naütlich ganz schön praktisch ;D
    na denn versuch ich mal bissle was in mein Script ein/umzubauen ;)

    Zitat


    Man sollte sich eigentlich von Anfang an daram gewöhnen, alle Variablen zu deklarieren. Und das passiert mit dem Wort Local. Näheres zu den Arten der Deklaration findest du in der Hilfe unter "Local, Global, Dim".

    ok danke :)

  • also das mit der Gui switchen hab ich jetzt kapiert auch
    die Funktion an sich ^^...aber wie mach ich das denn das nem butten
    die funktion zuteile das er ne msgbox öffnen soll..

    hab mir jetzt einfach mal das aus dem scriptrasugegriffen...aber is total FAIL -.-

    das hab ich mir rausgenommen:

    [autoit]

    While 1
    $msg = GUIGetMsg(1)
    Switch $msg[1]
    Case $button
    MsgBox(0, '', 'Button 3 geklickt')
    EndSwitch

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

    WEnd

    [/autoit]

    allerdings wenn ich auf den button dann drücke passiert einfach nichts...
    Vorschläge`?


  • allerdings wenn ich auf den button dann drücke passiert einfach nichts...
    Vorschläge`?

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

    While 1
    $msg = GUIGetMsg(1)
    Switch $msg[1];Liefert den "Handle" des fensters, von welchem geklickt wurde.
    Case $GUI1 ;Falls es von deiner ersten GUI war,
    Switch $msg[0] ; Liefert das Event, welches passiert ist
    Case $button ; falls dieses Event der klick auf den BUtton war,
    MsgBox(0, '', 'Button 3 geklickt')
    Case $Slider ; falls es zb. ein Slider war,
    MsgBox(0,"","Slider wurde bewegt")
    EndSwitch
    Case $GUI2 ; Falls es nicht GUI1, sondern GUI2 war,
    Switch $msg[0] ;Frage wieder das Event ab.
    Case $ButtonGUI2
    MsgBox(0,"","der Buttons auf GUI2 wurde geklickt")
    EndSwitch
    EndSwitch
    WEnd

    [/autoit]


    Vielleicht bringt das ja gewünschten effekt.

    EDIT: Korrigiert und Kommentiert.

  • Boah danke ^^
    nur wegen dieser kleinen 1 :D
    vielen Dank nochmals...is alles gelöst!!

    kann closed werden.

  • Kein Problem ;) ich habs jetzt nochmal überarbeitet, falls du mehrere GUIs abfragen möchtest.
    Ich glaube das geht auch mit simplem GUISwitch aber so muss nihct immer die komplette Schleife durchgelaufen werden (spart Rechenzeit)

    Danke an dieser Stelle auch an Bugfix, denn jetzt weiß auch ich wie man den Advanced Parameter verwendet !