Frage zu Checkboxen

  • hi ich schreibe gerade ein unattend script für meine firma und habe ein problem
    ich hab die forensuche schon bemüht aber nix anständiges gefunden.

    Also ich will das man auswählen kann zwischen Office 2003 und office 2007 so weit so gut.
    Nun der Knackpunkt ich will wenn man z.b. Office 2007 anklickt das der check vor Office 2003 deaktiviert wird
    so das nicht beide office installationen gecheckt sind (ist ja unsinnig beides zu installieren)

    ich hoffe das war verständlich

  • Radio ist doch was anderes als Checkboxes oder kann man das auch so verwenden ?

    aso hier mal mein code auszugsweise

    [autoit]

    ;Checkbox Pflicht
    $checkboxpf = GuiCtrlCreateTreeView(30, 70, 150, 185, $TVS_CHECKBOXES)
    GuiCtrlCreateTreeViewItem("Lotus Notes", $checkboxpf)
    GuiCtrlSetState(-1, $GUI_CHECKED)
    GuiCtrlCreateTreeViewItem("Firefox", $checkboxpf)
    GuiCtrlSetState(-1, $GUI_CHECKED)
    GuiCtrlCreateTreeViewItem("Microsoft Office", $checkboxpf)
    GuiCtrlSetState(-1, $GUI_CHECKED)
    GuiCtrlCreateTreeViewItem("IE 7", $checkboxpf)
    GuiCtrlSetState(-1, $GUI_CHECKED)
    GuiCtrlCreateTreeViewItem("Novell", $checkboxpf)
    GuiCtrlSetState(-1, $GUI_CHECKED)

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

    ;Checkbox optional
    $checkboxop = GuiCtrlCreateTreeView(220, 70, 150, 155, $TVS_CHECKBOXES)
    GuiCtrlCreateTreeViewItem("Cisco VPN", $checkboxop)
    GuiCtrlCreateTreeViewItem("Faxolution 4 win", $checkboxop)
    GuiCtrlCreateTreeViewItem("Office 2007", $checkboxop)
    GuiCtrlCreateTreeViewItem("Visio", $checkboxop)
    GuiCtrlCreateTreeViewItem("Blackberry", $checkboxop)
    GuiCtrlCreateTreeViewItem("GPRS", $checkboxop)
    GuiCtrlCreateTreeViewItem("BT-Dialer", $checkboxop)
    GuiCtrlCreateTreeViewItem("Firewall", $checkboxop)

    [/autoit]
    • Offizieller Beitrag

    Radio ist doch was anderes als Checkboxes oder kann man das auch so verwenden ?


    Natürlich ist es das. Bei Radio kann immer NUR eines gecheckt sein, und das ist doch deine Anforderung. Die Auswertung von Checkboxen und Radios ist identisch. Nur dass du bei z.B. 2 Radios nur eine abfragen mußt, da die andere logischerweise den entgegengesetzten Status hat.
    Du kannst ja dort, wo eine Enweder-Oder-Wahl ist, Radios verwenden und ansonsten Checkboxen.

  • bleibt mir wohl nix anderes übrig obwohl das dann schon sehr komisch aussieht wenn überalle checkboxen sind und dann auf einmal 2 radios
    aber wenn es nix anders geht
    ich dachte nur vlt gibt s noch eine code dafür

    naja danke euch

    • Offizieller Beitrag

    ich dachte nur vlt gibt s noch eine code dafür


    Klar kannst du auch z.B. 2 Checkboxen gegenseitig ausschließen, d.h. dass sie arbeiten wie ein Radioctrl.
    Ich erstell mal ein kleines Bsp. und poste es gleich.

    Hier das Bsp.:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    $gui = GUICreate('CB-Test mit CB3 u. CB4 als Radio')
    $cb1 = GUICtrlCreateCheckbox('Check 1', 20, 20, 60)
    $cb2 = GUICtrlCreateCheckbox('Check 2', 20, 50, 60)
    $cb3 = GUICtrlCreateCheckbox('Check 3 (wenn 3, dann nicht 4)', 20, 80, 180)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $cb4 = GUICtrlCreateCheckbox('Check 4 (wenn 4, dann nicht 3)', 20, 110, 180)
    $cb5 = GUICtrlCreateCheckbox('Check 5', 20, 140, 60)
    $cb6 = GUICtrlCreateCheckbox('Check 6', 20, 170, 60)
    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $cb1

    Case $cb2

    Case $cb3
    If BitAND(GUICtrlRead($cb3), $GUI_CHECKED) Then
    GUICtrlSetState($cb4, $GUI_UNCHECKED)
    Else
    GUICtrlSetState($cb4, $GUI_CHECKED)
    EndIf
    Case $cb4
    If BitAND(GUICtrlRead($cb4), $GUI_CHECKED) Then
    GUICtrlSetState($cb3, $GUI_UNCHECKED)
    Else
    GUICtrlSetState($cb3, $GUI_CHECKED)
    EndIf
    Case $cb5

    Case $cb6

    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]
    • Offizieller Beitrag

    Mir fällt ein, du willst ja die Möglichkeit haben, auch keines der beiden zu installieren, dazu benötigst du eine zusätzlich Checkbox:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    $gui = GUICreate('CB-Test mit CB3 u. CB4 als Radio')
    $cb1 = GUICtrlCreateCheckbox('Check 1', 20, 20, 60)
    $cb2 = GUICtrlCreateCheckbox('Install 3 od. 4?', 20, 50, 100)
    $cb3 = GUICtrlCreateCheckbox('Check 3 (wenn 3, dann nicht 4)', 35, 80, 180)
    GUICtrlSetState(-1, $GUI_CHECKED)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $cb4 = GUICtrlCreateCheckbox('Check 4 (wenn 4, dann nicht 3)', 35, 110, 180)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $cb5 = GUICtrlCreateCheckbox('Check 5', 20, 140, 60)
    $cb6 = GUICtrlCreateCheckbox('Check 6', 20, 170, 60)
    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $cb1

    Case $cb2
    If BitAND(GUICtrlRead($cb2), $GUI_CHECKED) Then
    GUICtrlSetState($cb3, $GUI_ENABLE)
    GUICtrlSetState($cb4, $GUI_ENABLE)
    Else
    GUICtrlSetState($cb3, $GUI_DISABLE)
    GUICtrlSetState($cb4, $GUI_DISABLE)
    EndIf
    Case $cb3
    If BitAND(GUICtrlRead($cb3), $GUI_CHECKED) Then
    GUICtrlSetState($cb4, $GUI_UNCHECKED)
    Else
    GUICtrlSetState($cb4, $GUI_CHECKED)
    EndIf
    Case $cb4
    If BitAND(GUICtrlRead($cb4), $GUI_CHECKED) Then
    GUICtrlSetState($cb3, $GUI_UNCHECKED)
    Else
    GUICtrlSetState($cb3, $GUI_CHECKED)
    EndIf
    Case $cb5

    Case $cb6

    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]