Ein Einstellungsmenü für anderen script FEHLER

  • Hi ich bräuchte für mein script nen einstellungsmenü. Habe auch schon fleißig programmiert doch es hat einen Fehler. AU3Check sagt aber es ist alles in Ordnung. Aber es will halt nicht so wie es vor der änderung wollte.

    Spoiler anzeigen
    [autoit]

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

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

    Global $Konfig = @ScriptDir & "\Konfig.ini"
    Global $Transread = IniRead($Konfig,"Transparenz","ENABLEORDISABLE","ENABLE")
    Global $Waitread = IniRead($Konfig,"WaitTime","ENABLEORDISABLE","DISABLE")
    Global $Messageread = IniRead($Konfig,"Message","ENABLEORDISABLE","ENABLE")

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

    #Region ### START Koda GUI section ### Form=
    $SAVE = GUICreate("Form1", 454, 322, 192, 124, $WS_POPUPWINDOW)
    $Label5 = GUICtrlCreateLabel("Einstellungen", 104, 16, 195, 41)
    GUICtrlSetFont(-1, 24, 400, 0, "MS Sans Serif")
    $Checkbox1 = GUICtrlCreateCheckbox("Transparenz wenn Mauszeiger nicht auf Programmfenster ist?", 16, 88, 393, 41)
    If $Transread = "ENABLE" Then
    GUICtrlSetState(-1, $GUI_CHECKED)
    Else
    GUICtrlSetState(-1, $GUI_UNCHECKED)
    EndIf
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Checkbox2 = GUICtrlCreateCheckbox("Eine Zeit lang warten und erst dann Transparenz", 48, 128, 313, 25)
    If $Waitread = "ENABLE" Then
    GUICtrlSetState(-1, $GUI_CHECKED)
    Else
    GUICtrlSetState(-1, $GUI_UNCHECKED)
    EndIf
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Input1 = GUICtrlCreateInput("", 48, 160, 153, 24)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label6 = GUICtrlCreateLabel("Nur Zahlen! (z.b. so:12) Keine Leerzeichen", 200, 160, 251, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Checkbox3 = GUICtrlCreateCheckbox("Startanimation anzeigen", 16, 232, 225, 41)
    If $Messageread = "ENABLE" Then
    GUICtrlSetState(-1, $GUI_CHECKED)
    Else
    GUICtrlSetState(-1, $GUI_UNCHECKED)
    EndIf
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Button1 = GUICtrlCreateButton("Speichern", 104, 272, 217, 41, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Global $Chek1read = GUICtrlRead($Checkbox1)
    Global $Chek2read = GUICtrlRead($Checkbox2)
    Global $Chek3read = GUICtrlRead($Checkbox3)

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

    While Sleep(50)
    If $Chek1read = $GUI_CHECKED Then
    GUICtrlSetState($Checkbox2,$GUI_ENABLE)
    Else
    GUICtrlSetState($Checkbox2,$GUI_DISABLE)
    GUICtrlSetState($Input1,$GUI_DISABLE)
    GUICtrlSetState($Label6,$GUI_DISABLE)
    EndIf
    If $Chek2read = $GUI_CHECKED Then
    GUICtrlSetState($Input1,$GUI_ENABLE)
    GUICtrlSetState($Label6,$GUI_ENABLE)
    Else
    GUICtrlSetState($Input1,$GUI_DISABLE)
    GUICtrlSetState($Label6,$GUI_DISABLE)
    EndIf
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    _Save()
    EndSwitch
    WEnd

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

    Func _Save()
    If $Chek1read = $GUI_UNCHECKED Then
    IniDelete($Konfig,"Transparenz","ENABLEORDISABLE")
    IniWrite($Konfig,"Transparenz","ENABLEORDISABLE","DISABLE")
    IniDelete($Konfig,"WaitTime","ENABLEORDISABLE")
    IniWrite($Konfig,"WaitTime","ENABLEORDISABLE","DISABLE")
    EndIf
    If $Chek1read = $GUI_CHECKED Then
    IniDelete($Konfig,"Transparenz","ENABLEORDISABLE")
    IniWrite($Konfig,"Transparenz","ENABLEORDISABLE","ENABLE")
    If $Chek2read = $GUI_CHECKED Then
    IniDelete($Konfig,"WaitTime","ENABLEORDISABLE")
    IniWrite($Konfig,"WaitTime","ENABLEORDISABLE","ENABLE")
    Else
    IniDelete($Konfig,"WaitTime","ENABLEORDISABLE")
    IniWrite($Konfig,"WaitTime","ENABLEORDISABLE","DISABLE")
    EndIf
    EndIf
    If $Chek3read = $GUI_CHECKED Then
    IniDelete($Konfig,"Message","ENABLEORDISABLE")
    IniWrite($Konfig,"Message","ENABLEORDISABLE","ENABLE")
    Else
    IniDelete($Konfig,"Message","ENABLEORDISABLE")
    IniWrite($Konfig,"Message","ENABLEORDISABLE","DISABLE")
    EndIf
    GUIDelete($SAVE)
    EndFunc

    [/autoit]


    Wenn $checkbox1 gecheckt ist soll man $checkbox2 checken können. Wenn nicht eben nicht.
    Wenn $checkbox1 und 2 gecheckt sind soll man in das input schreiben können und das label soll nicht mehr Disabled sein.
    Dass funktioniert aber leider nicht. Es hatte funktioniert aber nach ein paar änderungen ging es nicht mehr.
    Anscheinend wird die die Funktion _Save() nicht ausgeführt. Wieso :?::?::?:

    Einmal editiert, zuletzt von Molaynox (17. Oktober 2010 um 21:09)

  • Schreib einfach

    [autoit]

    $Chek1read = GUICtrlRead($Checkbox1)
    $Chek2read = GUICtrlRead($Checkbox2)
    $Chek3read = GUICtrlRead($Checkbox3)

    [/autoit]


    in die whileschleife (Z. 50)
    aber es ist auch nicht grade schön, sowas mit einer while-Schleife zu lösen,

    [autoit]

    GUICtrlSetOnEvent

    [/autoit]

    wäre wohl schöner ;)

    €dit: Die Func _save() wird ausgefüht, denn das GUI verschwindet ja, und das steht in der _save()
    MfG,
    Fresapore

  • Habs mal mit GUICtrlSetOnEvent versucht schaff es aber irgendwie nicht. Hier der aktuelle script:

    Spoiler anzeigen
    [autoit]

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

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

    Global $Konfig = @ScriptDir & "\Konfig.ini"
    Global $Transread = IniRead($Konfig,"Transparenz","ENABLEORDISABLE","ENABLE")
    Global $Waitread = IniRead($Konfig,"WaitTime","ENABLEORDISABLE","DISABLE")
    Global $Messageread = IniRead($Konfig,"Message","ENABLEORDISABLE","ENABLE")
    Opt("GUIOnEventMode", 1)

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

    #Region ### START Koda GUI section ### Form=
    $SAVE = GUICreate("Form1", 454, 322, 192, 124, $WS_POPUPWINDOW)
    $Label5 = GUICtrlCreateLabel("Einstellungen", 104, 16, 195, 41)
    GUICtrlSetFont(-1, 24, 400, 0, "MS Sans Serif")
    $Checkbox1 = GUICtrlCreateCheckbox("Transparenz wenn Mauszeiger nicht auf Programmfenster ist?", 16, 88, 393, 41)
    GUICtrlSetOnEvent(-1,"_Check1")
    If $Transread = "ENABLE" Then
    GUICtrlSetState(-1, $GUI_CHECKED)
    Else
    GUICtrlSetState(-1, $GUI_UNCHECKED)
    EndIf
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Checkbox2 = GUICtrlCreateCheckbox("Eine Zeit lang warten und erst dann Transparenz", 48, 128, 313, 25)
    GUICtrlSetOnEvent(-1,"_Check1")
    If $Waitread = "ENABLE" Then
    GUICtrlSetState(-1, $GUI_CHECKED)
    Else
    GUICtrlSetState(-1, $GUI_UNCHECKED)
    EndIf
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Input1 = GUICtrlCreateInput("", 48, 160, 153, 24)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label6 = GUICtrlCreateLabel("Nur Zahlen! (z.b. so:12) Keine Leerzeichen", 200, 160, 251, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Checkbox3 = GUICtrlCreateCheckbox("Startanimation anzeigen", 16, 232, 225, 41)
    If $Messageread = "ENABLE" Then
    GUICtrlSetState(-1, $GUI_CHECKED)
    Else
    GUICtrlSetState(-1, $GUI_UNCHECKED)
    EndIf
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Button1 = GUICtrlCreateButton("Speichern", 104, 272, 217, 41, $WS_GROUP)
    GUICtrlSetOnEvent(-1,"_Save")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

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

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

    Func _Save()
    $Chek1read = GUICtrlRead($Checkbox1)
    $Chek2read = GUICtrlRead($Checkbox2)
    $Chek3read = GUICtrlRead($Checkbox3)
    If $Chek1read = $GUI_UNCHECKED Then
    IniDelete($Konfig,"Transparenz","ENABLEORDISABLE")
    IniWrite($Konfig,"Transparenz","ENABLEORDISABLE","DISABLE")
    IniDelete($Konfig,"WaitTime","ENABLEORDISABLE")
    IniWrite($Konfig,"WaitTime","ENABLEORDISABLE","DISABLE")
    EndIf
    If $Chek1read = $GUI_CHECKED Then
    IniDelete($Konfig,"Transparenz","ENABLEORDISABLE")
    IniWrite($Konfig,"Transparenz","ENABLEORDISABLE","ENABLE")
    If $Chek2read = $GUI_CHECKED Then
    IniDelete($Konfig,"WaitTime","ENABLEORDISABLE")
    IniWrite($Konfig,"WaitTime","ENABLEORDISABLE","ENABLE")
    Else
    IniDelete($Konfig,"WaitTime","ENABLEORDISABLE")
    IniWrite($Konfig,"WaitTime","ENABLEORDISABLE","DISABLE")
    EndIf
    EndIf
    If $Chek3read = $GUI_CHECKED Then
    IniDelete($Konfig,"Message","ENABLEORDISABLE")
    IniWrite($Konfig,"Message","ENABLEORDISABLE","ENABLE")
    Else
    IniDelete($Konfig,"Message","ENABLEORDISABLE")
    IniWrite($Konfig,"Message","ENABLEORDISABLE","DISABLE")
    EndIf
    GUIDelete($SAVE)
    EndFunc

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

    Func _Check1()
    $Chek1read = GUICtrlRead($Checkbox1)
    $Chek2read = GUICtrlRead($Checkbox2)
    $Chek3read = GUICtrlRead($Checkbox3)
    If $Chek1read = $GUI_UNCHECKED Then
    IniDelete($Konfig,"Transparenz","ENABLEORDISABLE")
    IniWrite($Konfig,"Transparenz","ENABLEORDISABLE","DISABLE")
    IniDelete($Konfig,"WaitTime","ENABLEORDISABLE")
    IniWrite($Konfig,"WaitTime","ENABLEORDISABLE","DISABLE")
    EndIf
    If $Chek1read = $GUI_CHECKED Then
    IniDelete($Konfig,"Transparenz","ENABLEORDISABLE")
    IniWrite($Konfig,"Transparenz","ENABLEORDISABLE","ENABLE")
    If $Chek2read = $GUI_CHECKED Then
    IniDelete($Konfig,"WaitTime","ENABLEORDISABLE")
    IniWrite($Konfig,"WaitTime","ENABLEORDISABLE","ENABLE")
    Else
    IniDelete($Konfig,"WaitTime","ENABLEORDISABLE")
    IniWrite($Konfig,"WaitTime","ENABLEORDISABLE","DISABLE")
    EndIf
    EndIf
    EndFunc

    [/autoit]


    Was ist noch falsch denn das mit $GUI_ENABLE Und $GUI_DISABLE funktioniert noch nicht

  • Beim Guioneventmode kannst du den Befehl $msg = guigetmsg() nicht verwenden..
    Warum schreibst/löschst du denn in Inis in der Funktion _check1()?
    Würde da nicht sowas reichen wie:
    Wäre so nicht ausreichen?

    Spoiler anzeigen
    [autoit]

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

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

    Global $Konfig = @ScriptDir & "\Konfig.ini"
    Global $Transread = IniRead($Konfig,"Transparenz","ENABLEORDISABLE","ENABLE")
    Global $Waitread = IniRead($Konfig,"WaitTime","ENABLEORDISABLE","DISABLE")
    Global $Messageread = IniRead($Konfig,"Message","ENABLEORDISABLE","ENABLE")
    Opt("GUIOnEventMode", 1)

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

    Hotkeyset("{ESC}", "_exit")
    #Region ### START Koda GUI section ### Form=
    $SAVE = GUICreate("Form1", 454, 322, 192, 124, $WS_POPUPWINDOW)
    $Label5 = GUICtrlCreateLabel("Einstellungen", 104, 16, 195, 41)
    GUICtrlSetFont(-1, 24, 400, 0, "MS Sans Serif")
    $Checkbox1 = GUICtrlCreateCheckbox("Transparenz wenn Mauszeiger nicht auf Programmfenster ist?", 16, 88, 393, 41)
    GUICtrlSetOnEvent(-1,"_Check1")
    If $Transread = "ENABLE" Then
    GUICtrlSetState(-1, $GUI_CHECKED)
    Else
    GUICtrlSetState(-1, $GUI_UNCHECKED)
    EndIf
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Checkbox2 = GUICtrlCreateCheckbox("Eine Zeit lang warten und erst dann Transparenz", 48, 128, 313, 25)
    GUICtrlSetOnEvent(-1,"_Check2")
    If $Waitread = "ENABLE" Then
    GUICtrlSetState(-1, $GUI_CHECKED)
    Else
    GUICtrlSetState(-1, $GUI_UNCHECKED)
    EndIf
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Input1 = GUICtrlCreateInput("", 48, 160, 153, 24, $ES_NUMBER)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label6 = GUICtrlCreateLabel("Nur Zahlen! (z.b. so:12) Keine Leerzeichen", 200, 160, 251, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Checkbox3 = GUICtrlCreateCheckbox("Startanimation anzeigen", 16, 232, 225, 41)
    If $Messageread = "ENABLE" Then
    GUICtrlSetState(-1, $GUI_CHECKED)
    Else
    GUICtrlSetState(-1, $GUI_UNCHECKED)
    EndIf
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Button1 = GUICtrlCreateButton("Speichern", 104, 272, 217, 41, $WS_GROUP)
    GUICtrlSetOnEvent(-1,"_Save")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    _check1()
    _check2()
    While 1
    sleep(40)
    WEnd

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

    Func _Save()
    $Chek1read = GUICtrlRead($Checkbox1)
    $Chek2read = GUICtrlRead($Checkbox2)
    $Chek3read = GUICtrlRead($Checkbox3)
    If $Chek1read = $GUI_UNCHECKED Then
    IniDelete($Konfig,"Transparenz","ENABLEORDISABLE")
    IniWrite($Konfig,"Transparenz","ENABLEORDISABLE","DISABLE")
    IniDelete($Konfig,"WaitTime","ENABLEORDISABLE")
    IniWrite($Konfig,"WaitTime","ENABLEORDISABLE","DISABLE")
    EndIf
    If $Chek1read = $GUI_CHECKED Then
    IniDelete($Konfig,"Transparenz","ENABLEORDISABLE")
    IniWrite($Konfig,"Transparenz","ENABLEORDISABLE","ENABLE")
    If $Chek2read = $GUI_CHECKED Then
    IniDelete($Konfig,"WaitTime","ENABLEORDISABLE")
    IniWrite($Konfig,"WaitTime","ENABLEORDISABLE","ENABLE")
    Else
    IniDelete($Konfig,"WaitTime","ENABLEORDISABLE")
    IniWrite($Konfig,"WaitTime","ENABLEORDISABLE","DISABLE")
    EndIf
    EndIf
    If $Chek3read = $GUI_CHECKED Then
    IniDelete($Konfig,"Message","ENABLEORDISABLE")
    IniWrite($Konfig,"Message","ENABLEORDISABLE","ENABLE")
    Else
    IniDelete($Konfig,"Message","ENABLEORDISABLE")
    IniWrite($Konfig,"Message","ENABLEORDISABLE","DISABLE")
    EndIf
    GUIDelete($SAVE)
    EndFunc

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

    Func _Check1()
    if guictrlread($checkbox1) = $GUI_CHECKED then
    guictrlsetstate($checkbox2, $GUI_ENABLE)
    else
    guictrlsetstate($checkbox2, $GUI_DISABLE)
    EndIf
    EndFunc
    Func _Check2()
    if guictrlread($checkbox2) = $GUI_CHECKED and guictrlread($checkbox1) = $GUI_CHECKED then
    guictrlsetstate($Input1, $GUI_ENABLE)
    else
    guictrlsetstate($Input1, $GUI_DISABLE)
    EndIf
    EndFunc

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

    Func _exit()
    Exit
    EndFunc

    [/autoit]