Radiobutton in schleife abfragen

  • hallo ich habe ein großes Problem
    ich bekomme meine 18 Radiobuttons nicht abgefragt und ich weis nicht wo da der Fehler liegt
    so habe ich es bisher gelöst

    Spoiler anzeigen
    [autoit]


    Func _saveini()

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

    Local $RB1 = GUICtrlGetState($Radio1)
    Local $RB2 = GUICtrlGetState($Radio2)
    Local $RB3 = GUICtrlGetState($Radio3)
    Local $RB4 = GUICtrlGetState($Radio4)
    Local $RB5 = GUICtrlGetState($Radio5)
    Local $RB6 = GUICtrlGetState($Radio6)
    Local $RB7 = GUICtrlGetState($Radio7)
    Local $RB8 = GUICtrlGetState($Radio8)
    Local $RB9 = GUICtrlGetState($Radio9)
    Local $RB10 = GUICtrlGetState($Radio10)
    Local $RB11 = GUICtrlGetState($Radio11)
    Local $RB12 = GUICtrlGetState($Radio12)
    Local $RB13 = GUICtrlGetState($Radio13)
    Local $RB14 = GUICtrlGetState($Radio14)
    Local $RB15 = GUICtrlGetState($Radio15)
    Local $RB16 = GUICtrlGetState($Radio16)
    Local $RB17 = GUICtrlGetState($Radio17)
    Local $RB18 = GUICtrlGetState($Radio18)

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

    if $RB1 = 144 Then
    IniWrite($file, "Status", "RB1", "1")
    Else
    IniWrite($file, "Status", "RB1", "0")
    EndIf
    If $RB2 = 144 Then
    IniWrite($file, "Status", "RB2", "1")
    Else
    IniWrite($file, "Status", "RB2", "0")
    EndIf
    If $RB3 = 144 Then
    IniWrite($file, "Status", "RB3", "1")
    Else
    IniWrite($file, "Status", "RB3", "0")
    EndIf
    If $RB4 = 144 Then
    IniWrite($file, "Status", "RB4", "1")
    Else
    IniWrite($file, "Status", "RB4", "0")
    EndIf
    If $RB5 = 144 Then
    IniWrite($file, "Status", "RB5", "1")
    Else
    IniWrite($file, "Status", "RB5", "0")
    EndIf
    If $RB6 = 144 Then
    IniWrite($file, "Status", "RB6", "1")
    Else
    IniWrite($file, "Status", "RB6", "0")
    EndIf
    If $RB7 = 144 Then
    IniWrite($file, "Status", "RB7", "1")
    Else
    IniWrite ($file, "Status", "RB7", "0" )
    EndIf
    If $RB8 = 144 Then
    IniWrite($file, "Status", "RB8", "1")
    Else
    IniWrite($file, "Status", "RB8", "0")
    EndIf
    If $RB9 = 144 Then
    IniWrite($file, "Status", "RB9", "1")
    Else
    IniWrite($file, "Status", "RB9", "0")
    EndIf
    If $RB10 = 144 Then
    IniWrite($file, "Status", "RB10", "1")
    Else
    IniWrite($file, "Status", "RB10", "0")
    EndIf
    If $RB11 = 144 Then
    IniWrite($file, "Status", "RB11", "1")
    Else
    IniWrite($file, "Status", "RB11", "0")
    EndIf
    If $RB12 = 144 Then
    IniWrite($file, "Status", "RB12", "1")
    Else
    IniWrite($file, "Status", "RB12", "0")
    EndIf
    If $RB13 = 144 Then
    IniWrite($file, "Status", "RB13", "1")
    Else
    IniWrite($file, "Status", "RB13", "0")
    EndIf
    If $RB14 = 144 Then
    IniWrite($file, "Status", "RB14", "1")
    Else
    IniWrite($file, "Status", "RB14", "0")
    EndIf
    If $RB15 = 144 Then
    IniWrite($file, "Status", "RB15", "1")
    Else
    IniWrite($file, "Status", "RB15", "0")
    EndIf
    If $RB16 = 144 Then
    IniWrite($file, "Status", "RB16", "1")
    Else
    IniWrite($file, "Status", "RB16", "0")
    EndIf
    If $RB17 = 144 Then
    IniWrite($file, "Status", "RB17", "1")
    Else
    IniWrite($file, "Status", "RB17", "0")
    EndIf
    If $RB18 = 144 Then
    IniWrite($file, "Status", "RB18", "1" )
    Else
    IniWrite($file, "Status", "RB18", "0" )
    EndIf

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

    EndFunc

    [/autoit]

    und so würde ich es gerne.
    machen ist ja viel einfacher.
    geht aber leider nicht nur warum nicht?

    Spoiler anzeigen
    [autoit]


    For $i = 1 To 18
    $RB ="$Radio" & $i
    if GUICtrlGetState($RB) = 144 Then
    IniWrite($file, "Status", "RB" & $i, "1")
    Else
    IniWrite($file, "Status", "RB" & $i, "0")
    EndIf
    Next

    [/autoit]

    Einmal editiert, zuletzt von Carsten123 (30. Juni 2008 um 20:02)

  • Spoiler anzeigen
    [autoit]

    For $i = 0 To 17
    ;Radioboxen in ein Array:
    Global $RB[18]
    For $i = 0 To 17
    RB[$i] = GUICtrlCreateRadio($i,7,$i*32+7)
    Next
    if GUICtrlGetState($RB[$i]) = 144 Then
    IniWrite($file, "Status", "RB" & $i, "1")
    Else
    IniWrite($file, "Status", "RB" & $i, "0")
    EndIf
    Next

    [/autoit]
  • Man kann das auch mit eval machen:

    [autoit]


    Func _saveini()
    For $x = 1 to 18
    $rb = GUICtrlRead(eval("Radio" & $x))
    If $rb = 1 Then
    IniWrite($file, "Status", "RB" & $x, "1")
    Else
    IniWrite($file, "Status", "RB" & $x, "0")
    EndIf
    Next
    EndFunc

    [/autoit]


    Komplettes Beispiel
    [autoit]


    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 197, 547, 193, 125)
    $Radio1 = GUICtrlCreateRadio("RB1", 16, 16, 137, 17)
    $Radio2 = GUICtrlCreateRadio("RB2", 16, 37, 137, 17)
    $Radio3 = GUICtrlCreateRadio("RB3", 16, 57, 137, 17)
    $Radio4 = GUICtrlCreateRadio("RB4", 16, 78, 137, 17)
    $Radio5 = GUICtrlCreateRadio("RB5", 16, 99, 137, 17)
    $Radio6 = GUICtrlCreateRadio("RB6", 16, 120, 137, 17)
    $Radio7 = GUICtrlCreateRadio("RB7", 16, 140, 137, 17)
    $Radio8 = GUICtrlCreateRadio("RB8", 16, 161, 137, 17)
    $Radio9 = GUICtrlCreateRadio("RB9", 16, 182, 137, 17)
    $Radio10 = GUICtrlCreateRadio("RB10", 16, 202, 137, 17)
    $Radio11 = GUICtrlCreateRadio("RB11", 16, 223, 137, 17)
    $Radio12 = GUICtrlCreateRadio("RB12", 16, 244, 137, 17)
    $Radio13 = GUICtrlCreateRadio("RB13", 16, 264, 137, 17)
    $Radio14 = GUICtrlCreateRadio("RB14", 16, 285, 137, 17)
    $Radio15 = GUICtrlCreateRadio("RB15", 16, 306, 137, 17)
    $Radio16 = GUICtrlCreateRadio("RB16", 16, 327, 137, 17)
    $Radio17 = GUICtrlCreateRadio("RB17", 16, 347, 137, 17)
    $Radio18 = GUICtrlCreateRadio("RB18", 16, 368, 137, 17)
    $Button1 = GUICtrlCreateButton("Write INI File", 32, 408, 113, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    $file = @ScriptDir & '\checkbox.ini'

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    _saveini()
    EndSwitch
    WEnd

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

    Func _saveini()
    For $x = 1 to 18
    $rb = GUICtrlRead(eval("Radio" & $x))
    If $rb = 1 Then
    IniWrite($file, "Status", "RB" & $x, "1")
    Else
    IniWrite($file, "Status", "RB" & $x, "0")
    EndIf
    Next
    EndFunc

    [/autoit]

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • hallo und danke JoEtHeKiLlEr aber ich komme damit nicht klar
    also ich habe ja in meiner gui schon die 18 Radioboxen
    $Radio1 -18

    und die will ich nur abfragen mehr nicht also nicht erst erstellen
    leider bekomme ich dein beispiel nicht so umgewandelt das es geht

    @ McPoldy Danke deins hat zwar auch nicht geklapt aber du hast mich zumindest auf die richtige spur gesätzt
    so klapt das nun Danke

    Spoiler anzeigen
    [autoit]


    For $i = 1 to 18
    $RB = GUICtrlGetState(eval("Radio" & $i))
    If $RB = 144 Then
    IniWrite($file, "Status", "RB" & $i, "1")
    Else
    IniWrite($file, "Status", "RB" & $i, "0")
    EndIf
    Next

    [/autoit]

    Danke euch allen für die schnelle hilfe der service hir ist spitze :rock: :thumbup: :thumbup: :thumbup: :thumbup: 8o

    Einmal editiert, zuletzt von Carsten123 (30. Juni 2008 um 19:58)

    • Offizieller Beitrag

    Hallo

    Beim erstellen der Checkboxes wie folgt vorgehen:

    [autoit]

    $RBStart = GUICtrlCreateDummy()
    GUICtrlCreateRadio("test",0,0)
    GUICtrlCreateRadio("test",0,30)
    GUICtrlCreateRadio("test",0,60)
    ;.....
    $RBEnd = GUICtrlCreateDummy()

    [/autoit]

    Auslesen mit _saveini dann so:

    [autoit]

    $x = 0
    For $i = $RBStart To $RBEnd ; ==> Looping through every checkbox
    $x += 1
    If GUICtrlGetState($i, $GUI_CHECKED) = 144 Then
    IniWrite($file, "Status", "RB"&$x, "1")
    Else
    IniWrite($file, "Status", "RB1"&$x, "0")
    EndIf
    Next

    [/autoit]

    Mfg Spider

  • @ GtaSpider danke für den tip aber er würde ja im Endeffekt genauso viel Script brauchen wie meine alte Methode
    ich wollte der aber abspecken ;)
    aber es geht ja nun 8o

  • ähm :whistling: ok du hast recht ich dachte ich müsste die Dummys alle einzelnd anlegen habe ich übersehen das du ja sie vorhandenen benutzt und die Dummys sozusagen davon abwandelst
    damit ist deine metohde auch supper sorry aber die größe ist ja gleich jetzt könnte man nur noch nach geschwindigkeit auswehlen
    und was davon nun schneller ist keine anung ?(

  • @All
    GtaSpider Dummy kannte ich noch nicht 8)
    Radioboxen erstellen:

    Spoiler anzeigen
    [autoit]


    Dim $aTime[3] = ["&JJJJ-MM-TT", "Tag des &Monats", "&WochenTag So/01-Sa/07"], $aTimeRb[3]

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

    For $i = 0 To 2
    $aTimeRb[$i] = GUICtrlCreateRadio($aTime[$i], 100 + $i * 100, 180, 85, 28, BitOR($BS_AUTORADIOBUTTON, $BS_MULTILINE))
    ;i erstellt 3 Optionsfelder (Radioboxen)
    Next

    [/autoit]


    Checkboxen erstellen:

    Spoiler anzeigen
    [autoit]


    Dim $aDaten[6] = ["&Firefox", "&Thunderbird", "O&utlook", "&Outlook Express", "Favoriten-&IE", "&Eigene Dateien"], $aDatenCkb[6] ;i Dim dekl. Variablen

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

    For $i = 0 To 5
    $aDatenCkb[$i] = GUICtrlCreateCheckbox($aDaten[$i], 240, 32 + $i * 20, 95, 17)
    ;i erstellt 6 Optionsfelder (Checkboxen)
    Next

    [/autoit]


    ;)