Loop m. Return beenden

  • Hallo,

    Ich komme mit meinem Programm irgendwie nicht richtig weiter.
    Habe meine Versuche alle wieder entfernt.

    Folgendes sollte passieren:

    Wenn man auf Start klickt, sollte der Loop endlos durchlaufen.

    1. Das Feld JAHR wird markiert (Dauer 5 Sekunden), zum nächsten Feld gehen...
    2. Das Feld Ordner wird markiert (Dauer 5 Sekunden) u.s.w.

    Wenn man nun RETURN drückt sollen die Felder gelesen werden und die
    Function Eintrag startet...
    Wenn die Function fertig ist, geht's wieder mit Jahr los...


    Spoiler anzeigen
    [autoit]


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

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

    $Form1_1 = GUICreate("Form1", 615, 484, 192, 124)
    $txtJahr = GUICtrlCreateInput("2014", 128, 48, 49, 32)
    GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
    $txtOrdner = GUICtrlCreateInput("", 128, 112, 441, 32)
    GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
    $txtDatei = GUICtrlCreateInput("", 128, 168, 441, 32)
    GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
    $txtAdresse = GUICtrlCreateInput("", 128, 224, 441, 32)
    GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
    $txtKopie = GUICtrlCreateInput("", 128, 352, 441, 32)
    GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
    $Label1 = GUICtrlCreateLabel("Jahr:", 72, 48, 45, 28)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $lblOrdner = GUICtrlCreateLabel("Ordner", 48, 112, 64, 28, $SS_RIGHT)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $lblDatei = GUICtrlCreateLabel("Datei", 69, 167, 46, 28, $SS_RIGHT)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $lblAdresse = GUICtrlCreateLabel("Adresse", 38, 232, 74, 28, $SS_RIGHT)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $lblKopie = GUICtrlCreateLabel("Kopie", 56, 354, 53, 28, $SS_RIGHT)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $btnEnde = GUICtrlCreateButton("beenden", 496, 416, 75, 25)
    $btnStart = GUICtrlCreateButton("Start", 496, 40, 75, 41)
    GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $txtJahr
    ;Send ("{Tab}")
    Case $txtOrdner
    Case $txtDatei
    Case $txtAdresse
    Case $txtKopie

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

    Case $btnEnde
    Exit
    Case $btnStart
    EndSwitch
    WEnd

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

    Func Eintrag()

    ;Code....

    ;fertig...
    ;Alle Felder leeren, Loop läuft weiter

    endfunc

    [/autoit]

    EDIT:

    Spoiler anzeigen
    [autoit]


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

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

    $Form1_1 = GUICreate("Form1", 615, 484, 192, 124)
    $txtJahr = GUICtrlCreateInput("2014", 128, 48, 49, 32)
    GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
    $txtOrdner = GUICtrlCreateInput("", 128, 112, 441, 32)
    GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
    $txtDatei = GUICtrlCreateInput("", 128, 168, 441, 32)
    GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
    $txtAdresse = GUICtrlCreateInput("", 128, 224, 441, 32)
    GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
    $txtKopie = GUICtrlCreateInput("", 128, 352, 441, 32)
    GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
    $Label1 = GUICtrlCreateLabel("Jahr:", 72, 48, 45, 28)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $lblOrdner = GUICtrlCreateLabel("Ordner", 48, 112, 64, 28, $SS_RIGHT)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $lblDatei = GUICtrlCreateLabel("Datei", 69, 167, 46, 28, $SS_RIGHT)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $lblAdresse = GUICtrlCreateLabel("Adresse", 38, 232, 74, 28, $SS_RIGHT)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $lblKopie = GUICtrlCreateLabel("Kopie", 56, 354, 53, 28, $SS_RIGHT)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $btnEnde = GUICtrlCreateButton("beenden", 496, 416, 75, 25)
    $btnStart = GUICtrlCreateButton("Start", 496, 40, 75, 41)
    GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)

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

    Global $Paused
    HotKeySet("{PAUSE}", "TogglePause")
    HotKeySet("{ESC}", "Terminate")
    HotKeySet("{Enter}", "Eintrag")

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

    ;~ $i = 0
    ;~ for $i=1 to 3
    ;~ Send ("{Tab}")
    ;~ Sleep(2000)
    ;~ next

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $txtJahr
    ;Send ("{Tab}")
    Case $txtOrdner
    Case $txtDatei
    Case $txtAdresse
    Case $txtKopie

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

    Case $btnEnde
    Exit
    Case $btnStart
    Send ("{Tab}")
    Sleep (2000)

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

    EndSwitch
    Send ("{Tab}")
    Sleep (2000)

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

    WEnd

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

    Func TogglePause()
    $Paused = Not $Paused
    While $Paused
    Sleep(100)
    ToolTip('Script ist pausiert', 0, 0)
    WEnd
    ToolTip("")
    EndFunc ;==>TogglePause

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

    Func Terminate()
    Exit 0
    EndFunc ;==>Terminate

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

    Func Eintrag()
    MsgBox(4096, "", "Das ist eine Nachricht.")
    EndFunc ;==>ShowMessage

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

    Wie kann ich verhindern, dass die Buttons im Loop nicht aktiviert werden?
    ;) Grüße Ilse

    2 Mal editiert, zuletzt von Ilse (6. Februar 2014 um 19:55)

  • Ich hab mich einmal an einer lösung versucht. Im selben zug hab ich gleich noch ein paar sachen vereinfacht.
    €: die verwendung von Send() ist nicht zu entfehlen da das sehr fehleranfällig ist, oder was passiert wen man in ein anderes Fenster wächselt? 8o

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Misc.au3>
    $Form1_1 = GUICreate("Form1", 615, 484, 192, 124)
    $btnEnde = GUICtrlCreateButton("beenden", 496, 416, 75, 25)
    GUISetFont(16, 400, 0, "MS Sans Serif", $Form1_1);ersetzt die vielen GuiCtrlSetFont
    $txtJahr = GUICtrlCreateInput("2014", 128, 48, 49, 32,$ES_NUMBER);es number evtl noch max länge auf 4 zeichen
    $txtOrdner = GUICtrlCreateInput("", 128, 112, 441, 32)
    $txtDatei = GUICtrlCreateInput("", 128, 168, 441, 32)
    $txtAdresse = GUICtrlCreateInput("", 128, 224, 441, 32)
    $txtKopie = GUICtrlCreateInput("", 128, 352, 441, 32)
    $Label1 = GUICtrlCreateLabel("Jahr:", 72, 48, 45, 28)
    $lblOrdner = GUICtrlCreateLabel("Ordner", 48, 112, 64, 28, $SS_RIGHT)
    $lblDatei = GUICtrlCreateLabel("Datei", 69, 167, 46, 28, $SS_RIGHT)
    $lblAdresse = GUICtrlCreateLabel("Adresse", 38, 232, 74, 28, $SS_RIGHT)
    $lblKopie = GUICtrlCreateLabel("Kopie", 56, 354, 53, 28, $SS_RIGHT)
    $btnStart = GUICtrlCreateButton("Start", 496, 40, 75, 41)
    GUISetState(@SW_SHOW)
    Global $bFreigabe, $aControl[6] = [1, $txtJahr, $txtOrdner, $txtDatei, $txtAdresse, $txtKopie];array mit handels und index(element 0) füllen
    _NextItem();erstes selektieren
    AdlibRegister("_NextItem", 5000);alle 5s _NextItem Funktion aufrufen

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

    While 1
    If _IsPressed("0D") Then $bFreigabe=1;wenn Return gedrückt wurde freigabe erteilen
    If $bFreigabe=1 Then;wenn return gedrückt wurde
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btnEnde
    Exit
    Case $btnStart
    Eintrag()
    EndSwitch
    Else
    Sleep(100)
    EndIf
    WEnd

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

    Func _NextItem()
    GUICtrlSetState($aControl[$aControl[0]], $GUI_FOCUS);nextes item fokusieren
    $aControl[0] += 1
    If $aControl[0] = UBound($aControl) Then $aControl[0] = 1;wenn der index auf dem letzten array element steht wider auf 1 setzen
    EndFunc ;==>_NextItem
    Func Eintrag()

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

    ;Code....

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

    ;fertig...
    ;Alle Felder leeren, Loop läuft weiter
    $bFreigabe=0
    EndFunc ;==>Eintrag

    [/autoit]