Maske ausführen

  • Hallo zusammen,

    ich bin gerade dabei, ein Programm zu schreiben um frisch installierte PCs zu customisieren.

    Hierfür habe ich eine Maske mit derzeit drei Tabs. Auf einem von diesem Tabs kann man angeben, welche Software auf dem PC installiert werden soll.
    Hierfür habe ich für jede verfügbare Software eine Checkbox gemacht und zusätzlich eine Checkbox "Standardsoftware installieren". Wenn letztere Checkbox angeklickt ist, sollen alle anderen auch angeklickt sein und zusätzlich auf "disabled" gesetzt werden. Ich habe eine Function erstellt, die bei anklicken von von "Standardsoftware installieren" ausgeführt wird. Die funktioniert auch soweit, allerdings wird die Maske geschlossen.

    Zusätzlich habe ich ein Button "Beenden" erstellt und versuche nun hinzukriegen, dass die Maske nur dann geschlossen wird, wenn der Benutzer auf "Beenden" klickt.

    Dies ist mir aber bis her nicht gelungen. Habt ihr eine Idee, wie ich das machen könnte ?

    Vielen Dank im Voraus

    Zoltan

    • Offizieller Beitrag

    Ich habe mal in einem Bsp. von mir das Enablen/Disablen mit eingefügt:

    Spoiler anzeigen
    [autoit]

    ; Muster Checkbox-Bearbeitung
    ; Ziel: einfache Abfrage, welche CB aktiviert sind

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

    #include <GUIConstants.au3>
    Opt('GUIOnEventMode', 1)
    Opt("MustDeclareVars", 1)
    Global $bCheckAll, $bUnCheckAll, $GUI, $i, $str
    Global $arCB[20][2] ; Array für Handle und Dual-Wert der CB
    For $i = 0 To UBound($arCB) -1
    $arCB[$i][1] = 2^$i ; Zuweisung eindeutiger Wert
    Next
    Global $Checked = 0 ; Variable nimmt Status ALLER Checkboxen in einem Wert auf,
    ; Startstatus für alle: UNCHECKED
    Global $w = 500, $h = 20*30+40, $l = (@DesktopWidth-$w)/2, $t = (@DesktopHeight-$h)/2
    Global $top = -10
    $GUI = GUICreate('Test Checkbox', $w, $h, $l, $t)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_Ende')
    For $i = 0 To UBound($arCB) -1
    $top += 30
    $arCB[$i][0] = GUICtrlCreateCheckbox('CheckBox_' & $i+1, 40, $top, 120)
    GUICtrlSetOnEvent(-1, '_ClickCB')
    Next
    $bCheckAll = GUICtrlCreateButton('Alle markieren', 250, 20, 150, 21)
    GUICtrlSetOnEvent(-1, '_CheckAll')
    $bUnCheckAll = GUICtrlCreateButton('Markierung aufheben', 250, 50, 150, 21)
    GUICtrlSetOnEvent(-1, '_UnCheckAll')
    GUISetState()

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

    While 1
    Sleep(100)
    WEnd

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

    Func _Ende()
    Exit
    EndFunc

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

    Func _ClickCB()
    For $i = 0 To UBound($arCB) -1
    If $arCB[$i][0] = @GUI_CtrlId Then
    $Checked = BitXOR($Checked, $arCB[$i][1])
    _ReadCB()
    ExitLoop
    EndIf
    Next
    EndFunc

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

    Func _CheckAll()
    For $i = 0 To UBound($arCB) -1
    If Not BitAND($Checked, $arCB[$i][1]) Then
    ;~ GUICtrlSetState($arCB[$i][0], $GUI_CHECKED)
    GUICtrlSetState($arCB[$i][0], BitOR($GUI_CHECKED, $GUI_DISABLE)) ; markieren und disablen
    $Checked = BitXOR($Checked, $arCB[$i][1])
    EndIf
    Next
    _ReadCB()
    EndFunc

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

    Func _UnCheckAll()
    For $i = 0 To UBound($arCB) -1
    If BitAND($Checked, $arCB[$i][1]) Then
    ;~ GUICtrlSetState($arCB[$i][0], $GUI_UNCHECKED)
    GUICtrlSetState($arCB[$i][0], BitOR($GUI_UNCHECKED, $GUI_ENABLE)) ; Markierung aufheben und enablen
    $Checked = BitXOR($Checked, $arCB[$i][1])
    EndIf
    Next
    _ReadCB()
    EndFunc

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

    Func _ReadCB() ; Fkt. dient nur zur Ausgabe, welche CB markiert sind
    Local $str = 'Markiert: '
    For $i = 0 To UBound($arCB) -1
    If BitAND($Checked, $arCB[$i][1]) Then $str &= $i+1 & ', '
    Next
    WinSetTitle($GUI, '', StringTrimRight($str, 2))
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Das Klingt als ob ich hier auch mal helfen könnte *g* natürlich wie erwähnt bräuchten wir deinen Code :)

    Habe in den vergangenen 6 Wochen sehr viel mit Tabs gearbeitet bis ich mich dann entschieden habe sie von 6 auf 2 zu reduzieren :D

    Grüße Yaerox

    Grüne Hölle