Script,Checkbox & Button problem.

  • Hallo Community.

    Ich habe ein Problem mit meinem Script.
    Ich habe eine Checkbox,einen Button & einen Script
    der auf dem Button aktiviert ist.

    Der Button ist deaktiviert, denn nur wenn die Checkbox angekreuzt wird,
    gibt der Button die Funktion frei. Auf dem Button liegt mein Script.

    Das Problem:

    Wenn ich ganz schnell und oft bei der Checkbox den Hacken setze und wieder entferne,
    und dann auf ungekreuzt lasse, und dann mit der Maus auf den Button gehe, so wird er
    aktiv, der Script läuft aber nicht wenn ich drauf drücke (soll so sein). Und wenn ich den Hacken wieder setze, und auf den Button drücke,
    dann läuft der Script trotzdem nicht. (Soll nicht so sein)

    Spoiler anzeigen
    [autoit]


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

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

    Case $Checkbox1
    If GUICtrlRead($Checkbox1) = $GUI_CHECKED Then
    $START = GUICtrlCreateButton("S T A R T", 88, 224, 129, 41, 0)
    GUICtrlSetFont(-1, 16, 400, 0, "ArtBrush")
    GUICtrlSetState (0,$GUI_ENABLE)
    Else
    $START = GUICtrlCreateButton("S T A R T", 88, 224, 129, 41, 0)
    GUICtrlSetFont(-1, 16, 400, 0, "ArtBrush")
    GUICtrlSetState (-1,$GUI_DISABLE)
    EndIf

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

    ; <==== Hier geht der Script weiter, aber das ist unwichtig...

    [/autoit]

    Das steht oben in der Koda Box:

    Spoiler anzeigen
    [autoit]


    $START = GUICtrlCreateButton("S T A R T", 88, 224, 129, 41, 0)
    GUICtrlSetFont(-1, 16, 400, 0, "ArtBrush")
    GUICtrlSetState (-1,$GUI_DISABLE)

    [/autoit]

    Einmal editiert, zuletzt von cOraXx (26. November 2010 um 21:05)

  • du solltest den button nur einmal erstellen und mithilfe von guictrlsetstate den status bearbeiten

    Zur laufzeit buttons erstellen würde ich anfängern nicht empfehlen

  • du solltest den button nur einmal erstellen und mithilfe von guictrlsetstate den status bearbeiten

    Ich habe ihn doch mit GUICtrlSetState bearbeitet.
    Und was meinst Du mit, ich sollte ihn nur ein mal erstellen?

  • Was meint er damit wohl? Du erstellst in deiner Schleife jedesmal wenn man die Checkbox anklickt einen neuen Button, der direkt über dem alten liegt. Das einzigste was in dem case fall drin bleiben kann ist guictrlsetstate und deine if bedingung. Der Rest wurde bereits beim Programmstart erledigt.

    EDIT: Zeile 11 ist btw auch falsch und funktioniert wenn dann nur zufällig, lies nochmal die Hilfe zum setstate Befehl. Zeile 15 ebenfalls sobald du die Button Erstellung da raus nimmst.

    Einmal editiert, zuletzt von misterspeed (26. November 2010 um 20:40)

  • Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $gui = GUICreate(200, 200)
    $START = GUICtrlCreateButton("S T A R T", 8, 80, 129, 41, 0)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $Checkbox1 = GUICtrlCreateCheckbox("checkbox", 8, 8)
    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Checkbox1
    If BitAND(GUICtrlRead($Checkbox1), $GUI_CHECKED) = $GUI_CHECKED Then
    GUICtrlSetState($START, $GUI_ENABLE)
    ElseIf BitAND(GUICtrlRead($Checkbox1), $GUI_UNCHECKED) = $GUI_UNCHECKED Then
    GUICtrlSetState($START, $GUI_DISABLE)
    EndIf
    EndSwitch
    WEnd

    [/autoit]


    Nächstes mal bitte mit vollständiger GUI posten.