Problem mit Statusabfrage

  • Also ich hab da mal ein Problem: Wenn die Zweite GUI geöffnet wird kommt gleich die MsgBox(einfach ausprobieren) wie kann man das abstellen?

    Hier mein Code:

    Spoiler anzeigen
    [autoit]

    #cs -----------------------------------------------------
    AutoIt Version: 3.2.8.1
    Von: Fast2

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

    Funktion:DragRacer3 Automatisierung
    #ce -----------------------------------------------------
    ;Anfang
    #include <GUIConstants.au3>
    GUICreate("Drag Racer Trainer", 600, 450)
    GUISetFont(14)
    GUICtrlCreateLabel("Dieser Trainer Automatisiert den Show Off Modus von Drag Racer v3", 20, 20)
    GUICtrlCreateLabel("Achtung! Dieser Trainer wurde nur für Firefox v1.5 getestet", 60, 60)
    GUICtrlCreateLabel("Bitte wählen sie aus den Einstellungen", 120, 100)
    $R1 = GUICtrlCreateRadio("Das Spiel ist in einem Fenster ", 30, 140)
    $R2 = GUICtrlCreateRadio("Das Spiel ist in einem Task ", 300, 140)
    $W1 = GUICtrlCreateButton("Weiter", 380, 400, 80)
    $F1 = GUICtrlCreateButton(" Fertig", 500, 400, 75)
    $Fa1 = GUISetBkColor(0x0000CD)
    GUISetState(@SW_Show)
    While 1
    $msg = GUIGetMsg()
    $WH1 = WinGetHandle("Drag Racer Trainer")
    Select
    Case $msg = $W1
    GUICreate("Drag Racer Trainer Auswahl", 500, 200)
    GUISetBkColor(0x0000CD)
    $CBM = GUICtrlCreateCombo("Bitte wählen sie die Musik", 25, 25)
    GUICtrlSetData($CBM, "Rock|Classic Rock|Hard Rock|Pop|HipHop|Rap")
    $B2 = GUICtrlCreateButton("Bestätigen", 435, 170)
    GUISetState(@SW_Hide, $WH1)
    $WH2 = WinGetHandle("Drag Racer Trainer Auswahl")
    GUISetState(@SW_Show, $WH2)
    If $msg = $B2 Then
    Select
    Case $CBM = "Rock"
    MsgBox(0, "Rock wurde ausgewählt", "Bitte auf OK klicken")
    Else
    MsgBox(0, "Rock wurde nicht ausgewählt", "Bitte trotzdem OK klicken")
    EndSelect
    EndIf
    Case $msg = $F1
    Exit
    EndSelect
    If $msg = $GUI_Event_Close Then
    Exit
    EndIf
    WEnd

    [/autoit]

    Projekte: Keine größeren (und fertigen)
    Gegen Internetzensur:
    https://epetitionen.bundestag.de/index.php?acti…s;petition=3860
    (Zeichnungsfrist abgelaufen)
    __________________________________________________________________________________________________________________________________
    Dieser Beitrag wurde bereits 264 mal editiert, zuletzt von »Fast2« (30. Februar 2009, 12:99)

  • Also bei mir gehts nicht??? Naja mal schaun.
    Edit: Mit Case kommt zwar die msgbox nicht mehr aber dafür passiert nichts beim Klick auf bestätigen.

    Projekte: Keine größeren (und fertigen)
    Gegen Internetzensur:
    https://epetitionen.bundestag.de/index.php?acti…s;petition=3860
    (Zeichnungsfrist abgelaufen)
    __________________________________________________________________________________________________________________________________
    Dieser Beitrag wurde bereits 264 mal editiert, zuletzt von »Fast2« (30. Februar 2009, 12:99)

    Einmal editiert, zuletzt von Fast2 (12. November 2007 um 16:12)

  • ich hatte das problem noch nie da ich wenn ich mal 2 guis brauch einfach alles controls in eine gui pack bei einem buttonklick werden dann alels controls aus der alten gui auf hide gesetzt und die neuen show ;)

  • Fast2
    Grundsätzlich solltest Du vor GUICreate eine Variable setzen und diese ansprechen..
    z.B.

    [autoit]

    $_wd1 = GUICreate("Drag Racer Trainer", 600, 450)

    [/autoit]

    Dann brauchst Du nicht mit WinGetHandle umständlich zu hantieren.

    Mehrere GUIs erzeugst Du besser hintereinander und versteckst sie solange bis Du sie brauchst.
    1. Fällt das Prüfen leichter, da alles schon beim Start gemalt wird
    2. Ist die Ausführung flüssiger
    3. Ist die Lesbarkeit besser


    Dein Fehler:
    If $msg = $B2 Then
    ..
    Else
    MsgBox(0, "Rock wurde nicht ausgewählt", "Bitte trotzdem OK klicken")

    Was soll das Skript anderes machen, als diese Box anzuzeigen?
    Da man nichts ausgewählt hat, muss das so kommen.

    Gruß
    Westi

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    $_WH1 = GUICreate("Drag Racer Trainer", 600, 450)
    GUISetFont(14)
    GUICtrlCreateLabel("Dieser Trainer Automatisiert den Show Off Modus von Drag Racer v3", 20, 20)
    GUICtrlCreateLabel("Achtung! Dieser Trainer wurde nur für Firefox v1.5 getestet", 60, 60)
    GUICtrlCreateLabel("Bitte wählen sie aus den Einstellungen", 120, 100)
    $_R1 = GUICtrlCreateRadio("Das Spiel ist in einem Fenster ", 30, 140)
    $_R2 = GUICtrlCreateRadio("Das Spiel ist in einem Task ", 300, 140)
    $_W1 = GUICtrlCreateButton("Weiter", 380, 400, 80)
    $_F1 = GUICtrlCreateButton(" Fertig", 500, 400, 75)
    $_Fa1 = GUISetBkColor(0x0000CD)
    $_WH2 = GUICreate("Drag Racer Trainer Auswahl", 500, 200)
    GUISetBkColor(0x0000CD)
    $_CBM = GUICtrlCreateCombo("Bitte wählen sie die Musik", 25, 25)
    GUICtrlSetData($_CBM, "Rock|Classic Rock|Hard Rock|Pop|HipHop|Rap")
    $_B2 = GUICtrlCreateButton("Bestätigen", 435, 170)
    GUISetState(@SW_Hide, $_WH2)
    GUISetState(@SW_Show, $_WH1)
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $_W1
    GUISetState(@SW_Hide, $_WH1)
    GUISetState(@SW_Show, $_WH2)
    Case $msg = $_F1
    Exit
    Case $msg = $_B2

    Case $msg = $_CBM
    MsgBox(0, GUICtrlRead ( $_CBM), "Bitte auf OK klicken")
    EndSelect
    If $msg = $GUI_Event_Close Then
    Exit
    EndIf
    WEnd

    [/autoit]
  • Ich hab gedacht mit $msg = $B2 wird der Buttonstatus aufgerufen
    Und das mit den GUI hintereinander mach ich ja nur aus Performance gründen: Wenn man schon am anfang auf Beenden klickt muss ja gar keine GUI erzeugt werden.
    Aber ich hab ne Fehlerquelle erkannt.

    Projekte: Keine größeren (und fertigen)
    Gegen Internetzensur:
    https://epetitionen.bundestag.de/index.php?acti…s;petition=3860
    (Zeichnungsfrist abgelaufen)
    __________________________________________________________________________________________________________________________________
    Dieser Beitrag wurde bereits 264 mal editiert, zuletzt von »Fast2« (30. Februar 2009, 12:99)

  • Also: wie kann ich mein Script dazu bringen einfach die Überprüfung solange zu wiederholen bis Bestätigen gedrückt wurde?

    Edit: Ups steht ja schon da :D

    Edit2: Meine Schleife:

    Spoiler anzeigen
    [autoit]

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $W1
    $G2 = GUICreate("Drag Racer Trainer Auswahl", 500, 200)
    GUISetBkColor(0x0000CD)
    $CBM = GUICtrlCreateCombo("Bitte wählen sie die Musik", 25, 25)
    GUICtrlSetData($CBM, "Rock|Classic Rock|Hard Rock|Pop|HipHop|Rap")
    $B2 = GUICtrlCreateButton("Bestätigen", 435, 170)
    GUISetState(@SW_Hide, $G1)
    GUISetState(@SW_Show, $G2)
    While 2 If $msg = $B2 Then;Überprüft ob Fertig gedrückt wurde, wenn ja, setzt Überprüfung der Combo Box(en) in gang
    Select;Überprüft was jeweils bei den Combo Boxen gewählt wurde(wird später natürlich erweitert)
    Case $CBM = "Rock"
    MsgBox(0, "Rock wurde ausgewählt", "Bitte auf OK klicken")
    Case Else
    MsgBox(0, "Rock wurde nicht ausgewählt", "Bitte trotzdem OK klicken")
    EndSelect
    Else
    $Keine_Ahnung_wie_goto_bei_AutoIt_heisst;Soll wieder zu While 1 gehn
    EndIf
    If $msg = $GUI_Event_Close Then;Soll eigentlich bei klick auf X Fenster schliessen(geht nicht)
    Exit
    WEnd
    Case $msg = $F1
    Exit
    EndSelect
    If $msg = $GUI_Event_Close Then
    Exit
    EndIf
    WEnd

    [/autoit]


    Die Fehler: Das WEnd, das die While 2 beenden soll wird als Fehler gemeldet(C:\Dokumente und Einstellungen\Fabian\Desktop\DragRacer\DragRacer3 T 1.2.au3 (44) : ==>
    "Wend" statement with no matching "While" statement.: )
    Und 2. GUI geht net zu.

    Projekte: Keine größeren (und fertigen)
    Gegen Internetzensur:
    https://epetitionen.bundestag.de/index.php?acti…s;petition=3860
    (Zeichnungsfrist abgelaufen)
    __________________________________________________________________________________________________________________________________
    Dieser Beitrag wurde bereits 264 mal editiert, zuletzt von »Fast2« (30. Februar 2009, 12:99)

    2 Mal editiert, zuletzt von Fast2 (12. November 2007 um 21:11)

  • du könntest $Keine_Ahnung_wie_goto_bei_AutoIt_heisst durch exitloop ersetzen damit die die schleife while 2 verlässt und dich wieder in der schleife while 1 befindest. ;)

    bin mir aba nich ganz sicher.

  • Echt?Ich hab mir gedacht wenn ich die GUIs noch ausgestalte is es besser zu warten ob 2. Gebraucht wird.

    Projekte: Keine größeren (und fertigen)
    Gegen Internetzensur:
    https://epetitionen.bundestag.de/index.php?acti…s;petition=3860
    (Zeichnungsfrist abgelaufen)
    __________________________________________________________________________________________________________________________________
    Dieser Beitrag wurde bereits 264 mal editiert, zuletzt von »Fast2« (30. Februar 2009, 12:99)