Checkbox

  • Hi,

    hab n Problem mit Checkboxen. Das Script liest ne Ini aus und je nachdem wieviele "Werte" vorhanden sind werden Checkboxen erstellt.
    Das klappt ansich auch fast :D

    Spoiler anzeigen
    [autoit]

    #Region ### START Koda GUI section ### Form=
    $Form21 = GUICreate("Neuen Radiosender hinzufügen", 309, 284, 801, 401)
    $Tab21 = GUICtrlCreateTab(0, 0, 600, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    GUICtrlCreateTabItem("Sender Hinzufügen")
    $Button21 = GUICtrlCreateButton("&Speichern", 208, 240, 75, 25, 0)
    $Label21 = GUICtrlCreateLabel("Name :", 32, 24, 36, 17)
    $Input21 = GUICtrlCreateInput("", 78, 24, 200, 21)
    $Label22 = GUICtrlCreateLabel("URL :", 32, 64, 36, 17)
    $Edit21 = GUICtrlCreateEdit("", 78, 64, 220, 153)
    GUICtrlSetData(-1, "")
    $Tab21 = GUICtrlCreateTab(0, 0, 600, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    GUICtrlCreateTabItem("Sender Löschen")
    Dim $iniread2[$ername+1]
    For $7 = 1 To $ername Step 1
    $iniread2[$7] = IniRead(@ScriptDir & "\Eigene_Radios.ini", "EigeneRadiosNamen", $7, "-")
    If $iniread2[$7] = "-" Then ExitLoop
    Next
    If $7-1 = 0 Then
    $Label23 = GUICtrlCreateLabel("Keine Sender vorhanden", 20, 70)
    Else
    Dim $Checkbox4[$7+1]
    For $8 = 1 To ($7-1) Step 1
    $Checkbox4[$8] = GUICtrlCreateCheckbox($iniread2[$8], 20, 70+20*$8)
    Next
    EndIf
    $Button22 = GUICtrlCreateButton("&Löschen", 208, 240, 75, 25, 0)
    $Label24 = GUICtrlCreateLabel("Zum Löschen des Senders einen Haken in die Checkbox setzen", 20, 30, 300, 40)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    GUIDelete($Form21)
    ExitLoop
    Case $Button21
    $input21read = GUICtrlRead($Input21)
    $Edit21read = GUICtrlRead($Edit21)
    For $1 = 1 to $ername Step 1
    If IniRead(@ScriptDir & "\Eigene_Radios.ini", "EigeneRadiosNamen", $1, "-") = "-" Then
    IniWrite(@ScriptDir & "\Eigene_Radios.ini", "EigeneRadiosNamen", $1, $input21read)
    ExitLoop
    EndIf
    Next
    For $2 = 1 to $erurl Step 1
    If IniRead(@ScriptDir & "\Eigene_Radios.ini", "EigeneRadiosURL", $2, "-") = "-" Then
    IniWrite(@ScriptDir & "\Eigene_Radios.ini", "EigeneRadiosURL", $2, $Edit21read)
    ExitLoop
    EndIf
    Next
    $msgbox1 = MsgBox(68, "Info", "Damit die Änderungen wirksam werden muss das Programm neugestartet werden.")
    Select
    Case $msgbox1 = 6
    GUIDelete($Form21)
    GUIDelete($Form1)
    ;~ ShellExecute(@ScriptDir&"\technoplayer.exe")
    Exit
    Case $msgbox1 = 7
    GUIDelete($Form21)
    ExitLoop
    EndSelect
    Case $Button22
    Dim $read1[$8]
    For $9 = 1 To $8 Step 1
    $read1[$9] = GUICtrlRead($Checkbox4[$9])
    Next
    _ArrayDisplay($read1)
    EndSwitch
    WEnd

    [/autoit]


    (Includes fehlen, da es nur ein Auschnitt ist)

    Jedoch wird bei der If-Abfrage in Zeile 20 ein kleinere Checkbox zuviel erstellt.
    Warum ? 8|

  • [autoit]

    If $7-1 = 0 Then

    [/autoit]

    Diese Bedingung wird in deinem Fall NIE zutreffen. was willst du damit erreichen?
    Der Ausdruck, den du da verwendest heißt im Klartext übersetzt:

    Wenn das Control $7 das erste ist, das in diesem Skript erstellt wird (und das ist es nicht!) dann mache .......

  • $7 ist doch der Ausgangswert der vorherigen For-Next Schleife.
    Mit der If Abfrage wollte ich bezwecken, dass sobald keine Schlüssel in der Ini vorhanden sind nicht dich Checkboxen erstellt werden sondern das Label erscheint.

  • Hmm...
    Hab Zeile 24 in

    [autoit]

    For $8 = 1 To ($7-1) Step 1
    If $8 <> 1 Then
    $Checkbox4[$8] = GUICtrlCreateCheckbox($iniread2[$8], 20, 50+20*$8)
    EndIf
    Next

    [/autoit]


    umgeändert und jz funktionierts. Keine Ahnung warum ? :rofl: