Scriptfehler + Checkboxen

  • Einmal, was ist am folgenden Script falsch?

    [autoit]

    $Formtop = GUICreate("Punkte", 614, 447, 192, 122)
    $Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 16, 16, 17, 17)
    $Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 16, 40, 17, 17)
    $Checkbox3 = GUICtrlCreateCheckbox("Checkbox3", 16, 64, 17, 17)
    $Checkbox4 = GUICtrlCreateCheckbox("Checkbox4", 16, 88, 17, 17)
    $Checkbox5 = GUICtrlCreateCheckbox("Checkbox5", 16, 112, 17, 17)
    $Checkbox6 = GUICtrlCreateCheckbox("Checkbox6", 16, 136, 17, 17)
    $Checkbox7 = GUICtrlCreateCheckbox("Checkbox7", 16, 160, 17, 17)
    $Checkbox8 = GUICtrlCreateCheckbox("Checkbox8", 16, 184, 17, 17)
    $Checkbox9 = GUICtrlCreateCheckbox("Checkbox9", 16, 208, 17, 17)
    $Checkbox10 = GUICtrlCreateCheckbox("Checkbox10", 16, 232, 17, 17)
    $Checkbox11 = GUICtrlCreateCheckbox("Checkbox11", 16, 256, 17, 17)
    $Checkbox12 = GUICtrlCreateCheckbox("Checkbox12", 16, 280, 17, 17)
    $Checkbox13 = GUICtrlCreateCheckbox("Checkbox13", 16, 304, 17, 17)
    $Checkbox14 = GUICtrlCreateCheckbox("Checkbox14", 16, 328, 17, 17)
    $Checkbox15 = GUICtrlCreateCheckbox("Checkbox15", 16, 352, 17, 17)
    $Label1 = GUICtrlCreateLabel("TOP 1:", 32, 19, 38, 17)
    $Label2 = GUICtrlCreateLabel("TOP 2:", 32, 43, 38, 17)
    $Label3 = GUICtrlCreateLabel("TOP 3:", 32, 66, 38, 17)
    $Label4 = GUICtrlCreateLabel("TOP 4:", 32, 91, 38, 17)
    $Label5 = GUICtrlCreateLabel("TOP 5:", 32, 114, 38, 17)
    $Label6 = GUICtrlCreateLabel("TOP 6:", 32, 138, 38, 17)
    $Label7 = GUICtrlCreateLabel("TOP 7:", 32, 162, 38, 17)
    $Label8 = GUICtrlCreateLabel("TOP 8:", 32, 186, 38, 17)
    $Label9 = GUICtrlCreateLabel("TOP 9:", 32, 210, 38, 17)
    $Label10 = GUICtrlCreateLabel("TOP 10:", 32, 234, 44, 17)
    $Label11 = GUICtrlCreateLabel("TOP 11:", 32, 258, 44, 17)
    $Label12 = GUICtrlCreateLabel("TOP 12:", 32, 282, 44, 17)
    $Label13 = GUICtrlCreateLabel("TOP 13:", 32, 306, 44, 17)
    $Label14 = GUICtrlCreateLabel("TOP 14:", 32, 330, 44, 17)
    $Label15 = GUICtrlCreateLabel("TOP 15:", 32, 354, 44, 17)
    $Input1 = GUICtrlCreateInput("", 80, 16, 521, 21)
    $Input2 = GUICtrlCreateInput("", 80, 40, 521, 21)
    $Input3 = GUICtrlCreateInput("", 80, 64, 521, 21)
    $Input4 = GUICtrlCreateInput("", 80, 88, 521, 21)
    $Input5 = GUICtrlCreateInput("", 80, 112, 521, 21)
    $Input6 = GUICtrlCreateInput("", 80, 136, 521, 21)
    $Input7 = GUICtrlCreateInput("", 80, 160, 521, 21)
    $Input8 = GUICtrlCreateInput("", 80, 184, 521, 21)
    $Input9 = GUICtrlCreateInput("", 80, 208, 521, 21)
    $Input10 = GUICtrlCreateInput("", 80, 232, 521, 21)
    $Input11 = GUICtrlCreateInput("", 80, 256, 521, 21)
    $Input12 = GUICtrlCreateInput("", 80, 280, 521, 21)
    $Input13 = GUICtrlCreateInput("", 80, 304, 521, 21)
    $Input14 = GUICtrlCreateInput("", 80, 328, 521, 21)
    $Input15 = GUICtrlCreateInput("", 80, 352, 521, 21)
    $ButtonOK10 = GUICtrlCreateButton("Weiter", 80, 392, 137, 33)
    $ButtonCancel10 = GUICtrlCreateButton("Abbrechen", 360, 392, 145, 33)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $ButtonCancel10
    Exit
    Case $ButtonOK10
    $I1 = GUICtrlRead($Input1)
    $C1 = GUICtrlRead($Checkbox1)
    If $C1 = 1 Then $TOP1 = (@CRLF & "TOP 1: " & $I1)
    Else $TOP1 = ("")
    EndIf
    $I2 = GUICtrlRead($Input2)
    $C2 = GUICtrlRead($Checkbox2)
    If $C2 = 1 Then $TOP2 = (@CRLF & "TOP 2: " & $I2)
    Else $TOP2 = ("")
    EndIf
    $I3 = GUICtrlRead($Input3)
    $C3 = GUICtrlRead($Checkbox3)
    If $C3 = 1 Then $TOP3 = (@CRLF & "TOP 3: " & $I3)
    Else $TOP3 = ("")
    EndIf
    GUIDelete($Formtop)
    ExitLoop
    EndSwitch
    WEnd

    [/autoit]

    Und eine Weitere Frage. Ich möchte, dass, wenn man $Checkbox2 auswählen will muss $Checkbox1 ausgewählt sein, bei $Checkbox3 muss $Checkbox2 ausgewählt sein, usw...

  • Meinst du so etwas?

    Spoiler anzeigen
    [autoit]

    Global $Formtop, $a_Checkbox[15], $a_Input[15], $ButtonOK, $ButtonCancel

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

    $Formtop = GUICreate("Punkte", 614, 447, 192, 122)
    For $i = 0 To 14
    $a_Checkbox[$i] = GUICtrlCreateCheckbox ("TOP "& $i + 1 &":", 16, 16 + ($i * 24), 54, 17)
    $a_Input[$i] = GUICtrlCreateInput ("", 80, 16 + ($i * 24), 521, 21)
    If $i > 0 Then GUICtrlSetState ($a_Checkbox[$i], 128)
    Next

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

    $ButtonOK = GUICtrlCreateButton("Weiter", 80, 392, 137, 33)
    $ButtonCancel = GUICtrlCreateButton("Abbrechen", 360, 392, 145, 33)
    GUISetState(@SW_SHOW)

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

    While True
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit
    Case $ButtonCancel
    Exit
    Case $ButtonOK
    $I1 = GUICtrlRead($a_Input[0])
    $C1 = GUICtrlRead($a_Checkbox[0])
    If $C1 = 1 Then
    $TOP1 = (@CRLF & "TOP 1: " & $I1)
    Else
    $TOP1 = ("")
    EndIf
    $I2 = GUICtrlRead($a_Input[1])
    $C2 = GUICtrlRead($a_Checkbox[1])
    If $C2 = 1 Then
    $TOP2 = (@CRLF & "TOP 2: " & $I2)
    Else
    $TOP2 = ("")
    EndIf
    $I3 = GUICtrlRead($a_Input[2])
    $C3 = GUICtrlRead($a_Checkbox[2])
    If $C3 = 1 Then
    $TOP3 = (@CRLF & "TOP 3: " & $I3)
    Else
    $TOP3 = ("")
    EndIf
    GUIDelete($Formtop)
    ExitLoop
    EndSwitch
    For $i = 0 To 14
    If $nMsg = $a_Checkbox[$i] Then
    If GUICtrlRead ($a_Checkbox[$i]) = 1 Then
    GUICtrlSetState ($a_Checkbox[$i + 1], 64)
    Else
    For $j = $i + 1 To 14
    GUICtrlSetState ($a_Checkbox[$j], 132)
    Next
    EndIf
    EndIf
    Next
    WEnd

    [/autoit]

    Du solltest dich wirklich mal mit Arrays auseinandersetzen. Es hilft ungemein.

    Ah ja, falsch waren übrigens die Else-Abfragen.