How to: Ohne Korrketen Switch Gui schliessen

  • Hallo hier mal das relevante Code Stück

    [autoit]

    ;Gui mit 10 Inputboxen Edit: Inpufeldern
    $inp1 = GUICtrlGetHandle($Input1)
    $inp2 = GUICtrlGetHandle($Input2)
    $inp3 = GUICtrlGetHandle($Input3)
    $inp4 = GUICtrlGetHandle($Input4)
    $inp5 = GUICtrlGetHandle($Input5)
    $inp6 = GUICtrlGetHandle($Input6)
    $inp7 = GUICtrlGetHandle($Input7)
    $inp8 = GUICtrlGetHandle($Input8)
    $inp9 = GUICtrlGetHandle($Input9)
    $inp10 = GUICtrlGetHandle($Input10)

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

    While 1
    Switch ControlGetHandle("",$name10[1], ControlGetFocus(""));Wenn Input($x) aktiv und Enter gedrückt wird, dann Func X ausführen
    Case $inp1
    If _IsPressed("0D") Then
    _1()
    Do
    Sleep(10)
    Until Not _IsPressed("0D")
    EndIf


    Case $inp2
    If _IsPressed("0D") Then
    _2()
    Do
    Sleep(10)
    Until Not _IsPressed("0D")
    EndIf

    Case $inp3
    If _IsPressed("0D") Then
    _3()
    Do
    Sleep(10)
    Until Not _IsPressed("0D")
    EndIf

    Case $inp4
    If _IsPressed("0D") Then
    _4()
    Do
    Sleep(10)
    Until Not _IsPressed("0D")
    EndIf

    Case $inp5
    If _IsPressed("0D") Then
    _5()
    Do
    Sleep(10)
    Until Not _IsPressed("0D")
    EndIf

    Case $inp6
    If _IsPressed("0D") Then
    _6()
    Do
    Sleep(10)
    Until Not _IsPressed("0D")
    EndIf

    Case $inp7
    If _IsPressed("0D") Then
    _7()
    Do
    Sleep(10)
    Until Not _IsPressed("0D")
    EndIf

    Case $inp8
    If _IsPressed("0D") Then
    _8()
    Do
    Sleep(10)
    Until Not _IsPressed("0D")
    EndIf

    Case $inp9
    If _IsPressed("0D") Then
    _9()
    Do
    Sleep(10)
    Until Not _IsPressed("0D")
    EndIf

    Case $inp10
    If _IsPressed("0D") Then
    _10()
    Do
    Sleep(10)
    Until Not _IsPressed("0D")
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    Nun kann man die Gui ja nicht schließen.
    Aber wie geht das (ich bin mit einem 2ten Switch auch nicht weiter gekommen)

    Danke im vorraus

    mfg Ubuntu

    Ps: Die Gui soll mit dem X Knopf in der Windows Leiste geschlossen werden. (sollte ja klar sein)

    Einmal editiert, zuletzt von Ubuntu (12. Februar 2010 um 16:32)

  • versuch doch mal mit worten zu beschreiben was der code machen soll. bzw was das switch machen soll.
    ich denke da kann man einiges vereinfachen.

    cool wäre auch ein lauffähiger code^^

  • Ich habs erklärt :huh:

    ;Gui mit 10 Inpufeldern
    ;Wenn Input($x) aktiv und Enter gedrückt wird, dann Func X ausführen

    Ps: Die Gui soll mit dem X Knopf in der Windows Leiste geschlossen werden. (sollte ja klar sein)

    Der Code ist 500 Zeilen lang und gibt alleine auch noch keinen Sinn.
    Ich werd aber nochmal die Gui anhängen.(also raussuchen und posten)

    mfg Ubuntu

  • Gui (wenn man's Braucht)

    Spoiler anzeigen
    [autoit]

    $Form1 = GUICreate("Aufgaben", 325, 381, 344, 274)

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

    $Input1 = GUICtrlCreateInput($name1[1], 16, 8, 185, 21)
    $Input2 = GUICtrlCreateInput($name3[1], 16, 72, 185, 21)
    $Input3 = GUICtrlCreateInput($name2[1], 16, 104, 185, 21)
    $Input4 = GUICtrlCreateInput($name4[1], 16, 232, 185, 21)
    $Input5 = GUICtrlCreateInput($name5[1], 16, 200, 185, 21)
    $Input6 = GUICtrlCreateInput($name6[1], 16, 168, 185, 21)
    $Input7 = GUICtrlCreateInput($name7[1], 16, 136, 185, 21)
    $Input8 = GUICtrlCreateInput($name8[1], 16, 264, 185, 21)
    $Input9 = GUICtrlCreateInput($name9[1], 16, 296, 185, 21)
    $Input10 = GUICtrlCreateInput($name10[1], 16, 40, 185, 21)

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

    $Label1 = GUICtrlCreateLabel($name1[2], 208, 8, 108, 25)
    $Label2 = GUICtrlCreateLabel($name2[2], 208, 40, 108, 25)
    $Label3 = GUICtrlCreateLabel($name3[2], 208, 72, 108, 25)
    $Label4 = GUICtrlCreateLabel($name4[2], 208, 104, 108, 25)
    $Label5 = GUICtrlCreateLabel($name5[2], 208, 136, 108, 25)
    $Label6 = GUICtrlCreateLabel($name6[2], 208, 168, 108, 25)
    $Label7 = GUICtrlCreateLabel($name7[2], 208, 200, 108, 25)
    $Label8 = GUICtrlCreateLabel($name8[2], 208, 232, 108, 25)
    $Label9 = GUICtrlCreateLabel($name9[2], 208, 264, 108, 25)
    $Label10 = GUICtrlCreateLabel($name10[2], 208, 296, 106, 25)

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

    GUISetState(@SW_SHOW)

    [/autoit]


    Variablen natürlich undeklariert.
    Den kompletten Script werde ich bald ins Scripte Forum stellen.(ist kein geheimer Script oder Bot oder so ich will nur keinem zumuten sich durch den Code zu wühlen)

    mfg Ubuntu

  • Das ganze wurde bereits HIER diskutiert.
    Damals fragt ich mich (wie du lesen kannst) auch ob das ganze nicht schneller geht aber inzwischen bin ich ganz zufrieden so.(was nicht heisst das ich nicht offen für Vorschläge bin. immer her damit)

    Ich würde mich desweiteren mehr über Antworten auf meine Frage freuen.

    mfg Ubuntu

    Edit: Hm dann bräuchte man ja keinen Switch dazu *versteh* :rolleyes:
    Es wäre schön wenn du noch ein kleines Code Snippet dazu machen könntest (ich bin mir da ein bisschen unsicher)

    Einmal editiert, zuletzt von Ubuntu (12. Februar 2010 um 17:57)

  • 2 Möglichkeiten:
    1. Du setzt ein If in die Schleife (oder du machst einen Switch damit du später leichter zum guigetmsg()-switch guictrl's hinzufügen kannst.
    2. Du setzt den Button Setonevent, das geht glaube ich.

    EDIT: Wenn ich es richtig verstanden habe, gibt es noch eine möglichkeit:
    Du setzt den alten Switch auf GuiGetMsg() und machst für den Button einen neuen Case und die anderen Case's werden z.B. Case $Input1

  • hm also ich habs probiert aber Scite meckert :S
    Der Code ist auch nicht postenswert :S
    Könnte das jmd pls mal an meinem oder zumindest einem Beispiel demonstrieren.

    mfg Ubuntu

  • Ahh jetzt kenn ich meinen Fehler durch den dieser Thread überhaupt erst entstanden ist:
    Ich hab $msg nicht in der While Schleife deklariert :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes:

    Vielen Dank Schnitzel und TheShadowAE

    mfg Ubuntu