CheckBoxen mit Abhänigkeiten

  • Hallo zusammen.

    Ich schon wieder. Diesesmal versuche ich mich an GUI-Themen. In meinem angehängten Beispiel-Script sollen die Checkboxen 3 und 4 Abhänigkeiten von einander aufweisen. Sprich nur eine von beiden darf aktiviert sein. Klickt man eine von beiden soll die andere deaktiviert, wenn sie schon aktiviert ist.

    Das funktioniert aber nicht so, wie ich es mir vorstelle... Momentan deaktiviert Checkbox 4 die 3 aber nicht umgekehrt.

    Was mache ich nicht richtig?

    [autoit]


    #include <GUIConstantsEx.au3>
    Opt('MustDeclareVars', 1)
    GuiTest()
    Func GuiTest()
    Local $CheckBox_01, $CheckBox_02, $CheckBox_03, $CheckBox_04, $msg
    GUICreate("Checkbox-Test")
    $CheckBox_01 = GUICtrlCreateCheckbox("Das ist Checkbox 1", 10, 10, 120, 20)
    $CheckBox_02 = GUICtrlCreateCheckbox("Das ist Checkbox 2", 10, 30, 120, 20)
    $CheckBox_03 = GUICtrlCreateCheckbox("Das ist Checkbox 3", 10, 50, 120, 20)
    $CheckBox_04 = GUICtrlCreateCheckbox("Das ist Checkbox 4", 10, 70, 120, 20)
    GUISetState()
    While 1
    $msg = GUIGetMsg()
    ; (...)
    If GUICtrlRead($CheckBox_03) == $GUI_CHECKED Then
    GUICtrlSetState($CheckBox_04, $GUI_UNCHECKED)
    EndIf
    If GUICtrlRead($CheckBox_04) == $GUI_CHECKED Then
    GUICtrlSetState($CheckBox_03, $GUI_UNCHECKED)
    EndIf
    ; (...)
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd
    EndFunc ;==>GuiTest

    [/autoit]

    "Ausdauer wird früher oder später belohnt – meistens aber später" (Wilhelm Busch)

    Einmal editiert, zuletzt von matthias.s (2. August 2011 um 23:45)

  • Nimm für 3 + 4 statt Checkboxen Radios, da kann nur eine innerhalb einer Gruppe aktiv sein,


    Hallo autoBert

    Darüber hatte ich auch schon nachgedacht. Das gefällt mir dann aber nicht so :) Aber davon abgesehen, kann ich eine einmal aktivierte Radio-Gruppe nicht mehr deaktivieren, oder?

    "Ausdauer wird früher oder später belohnt – meistens aber später" (Wilhelm Busch)

  • Ich hab's...

    So klappt es:

    [autoit]


    #include <GUIConstantsEx.au3>
    Opt('MustDeclareVars', 1)
    GuiTest()
    Func GuiTest()
    Local $CheckBox_01, $CheckBox_02, $CheckBox_03, $CheckBox_04, $msg
    GUICreate("Checkbox-Test")
    $CheckBox_01 = GUICtrlCreateCheckbox("Das ist Checkbox 1", 10, 10, 120, 20)
    $CheckBox_02 = GUICtrlCreateCheckbox("Das ist Checkbox 2", 10, 30, 120, 20)
    $CheckBox_03 = GUICtrlCreateCheckbox("Das ist Checkbox 3", 10, 50, 120, 20)
    $CheckBox_04 = GUICtrlCreateCheckbox("Das ist Checkbox 4", 10, 70, 120, 20)
    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $CheckBox_03 And BitAND(GUICtrlRead($CheckBox_03), $GUI_CHECKED) = $GUI_CHECKED
    GUICtrlSetState($CheckBox_04, $GUI_UNCHECKED)
    Case $msg = $CheckBox_04 And BitAND(GUICtrlRead($CheckBox_04), $GUI_CHECKED) = $GUI_CHECKED
    GUICtrlSetState($CheckBox_03, $GUI_UNCHECKED)
    EndSelect
    WEnd
    EndFunc ;==>GuiTest

    [/autoit]

    "Ausdauer wird früher oder später belohnt – meistens aber später" (Wilhelm Busch)