StringSplit (Spalten-Problem)

  • Hallo,

    ich brauch mal wieder die Profis...

    Es sollen Checkboxen, Namen und Bilder gemacht werden.(alles in einer Zeile)
    Die Checkboxen und Namen sind ok!
    Wird das ganze mit einem Bild erweitert,
    dann stimmt StringSplit nicht mehr, es werden zusätzliche Checkboxen gemacht!

    Alles in einer Reihe OK!

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $Form1 = GUICreate("Form1", 800, 443, 192, 124)
    $btnCheckbox = GUICtrlCreateButton("Checkbox", 504, 400, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)

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

    Global $Wahl,$reihenAnzahl,$spaltenNr,$arPic

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $btnCheckbox
    _Namen()
    EndSwitch
    WEnd

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

    Func _Namen()
    Dim $Links = 25
    Dim $oben = 30
    Dim $Zwischen = 50
    Dim $Zeilen = 4
    Dim $Abstand = 300
    Dim $Namebreite = 100
    Dim $Namehoehe = 10

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

    ;Diese Fassung ist OK!
    $Wahl &= "c1 Name1|"
    $Wahl &= "d2 Name2|"
    $Wahl &= "e3 Name3|"
    $Wahl &= "n4 Name4|"

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

    ;Diese Fassung ist falsch, das Bild soll in die gleiche Reihe!

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

    ;~ $Wahl &= "c1 Name1|Bild1.jpg|"
    ;~ $Wahl &= "d2 Name2|Bild2.jpg|"
    ;~ $Wahl &= "e3 Name3|Bild3.jpg|"
    ;~ $Wahl &= "n4 Name4|Bild4.jpg|"

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

    $WahlSplit = StringSplit($Wahl, "|")
    Global $Checkbox[$WahlSplit[0]]
    Global $CheckboxName[$WahlSplit[0]]
    Global $arProgress[$WahlSplit[0]]

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

    For $i = 0 To $WahlSplit[0]-2
    If $i > 2 Then
    If Mod($i - 1, $reihenAnzahl) = 0 Then $spaltenNr += 1
    EndIf
    $chkName = StringTrimLeft($WahlSplit[$i +1 ], 3)
    $Checkbox[$i+1] = GUICtrlCreateCheckbox($chkName, $Links + Int($i / $Zeilen) * $Abstand, $oben + Mod($i, $Zeilen) * $Zwischen, $Namebreite, $Namehoehe)
    $arProgress[$i+1] = GUICtrlCreateProgress($Links + 100 + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen, $Namebreite, $Namehoehe)
    ;Msgbox(0,"",$WahlSplit[2])
    $arPic = GUICtrlCreatePic($WahlSplit[$i+1],$Links + 100 + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen, $Namebreite, $Namehoehe)

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

    GUICtrlSetFont($Checkbox[$i], 10, 500, 0, "Arial")

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

    Next

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

    EndFunc

    [/autoit]

    Mit weiterer Spalte ist das ganze falsch

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $Form1 = GUICreate("Form1", 800, 443, 192, 124)
    $btnCheckbox = GUICtrlCreateButton("Checkbox", 504, 400, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)

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

    Global $Wahl,$reihenAnzahl,$spaltenNr,$arPic

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $btnCheckbox
    _Namen()
    EndSwitch
    WEnd

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

    Func _Namen()
    Dim $Links = 25
    Dim $oben = 30
    Dim $Zwischen = 50
    Dim $Zeilen = 4
    Dim $Abstand = 300
    Dim $Namebreite = 100
    Dim $Namehoehe = 10

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

    ;Diese Fassung ist OK!
    ;~ $Wahl &= "c1 Name1|"
    ;~ $Wahl &= "d2 Name2|"
    ;~ $Wahl &= "e3 Name3|"
    ;~ $Wahl &= "n4 Name4|"

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

    ;Diese Fassung ist falsch, das Bild soll in die gleiche Reihe!

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

    $Wahl &= "c1 Name1|Bild1.jpg|"
    $Wahl &= "d2 Name2|Bild2.jpg|"
    $Wahl &= "e3 Name3|Bild3.jpg|"
    $Wahl &= "n4 Name4|Bild4.jpg|"

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

    $WahlSplit = StringSplit($Wahl, "|")
    Global $Checkbox[$WahlSplit[0]]
    Global $CheckboxName[$WahlSplit[0]]
    Global $arProgress[$WahlSplit[0]]

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

    For $i = 0 To $WahlSplit[0]-2
    If $i > 2 Then
    If Mod($i - 1, $reihenAnzahl) = 0 Then $spaltenNr += 1
    EndIf
    $chkName = StringTrimLeft($WahlSplit[$i +1 ], 3)
    $Checkbox[$i+1] = GUICtrlCreateCheckbox($chkName, $Links + Int($i / $Zeilen) * $Abstand, $oben + Mod($i, $Zeilen) * $Zwischen, $Namebreite, $Namehoehe)
    $arProgress[$i+1] = GUICtrlCreateProgress($Links + 100 + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen, $Namebreite, $Namehoehe)
    ;Msgbox(0,"",$WahlSplit[2])
    $arPic = GUICtrlCreatePic($WahlSplit[$i+1],$Links + 100 + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen, $Namebreite, $Namehoehe)

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

    GUICtrlSetFont($Checkbox[$i], 10, 500, 0, "Arial")

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

    Next

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

    EndFunc

    [/autoit]


    Komme einfach nicht weiter


    Liebe Grüße
    Ilse ;)

    Einmal editiert, zuletzt von Ilse (6. September 2012 um 11:20)

  • Meine angepasste Fassung funktioniert bei mir, aber ich weiß nicht genau wie du es haben willst. Schau einfach mal drüber und teste.


    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <String.au3>

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

    $Form1 = GUICreate("Form1", 800, 443, 192, 124)
    $btnCheckbox = GUICtrlCreateButton("Checkbox", 504, 400, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)

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

    Global $Wahl,$reihenAnzahl,$spaltenNr,$arPic

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $btnCheckbox
    _Namen()
    EndSwitch
    WEnd

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

    Func _Namen()
    Dim $Links = 25
    Dim $oben = 30
    Dim $Zwischen = 50
    Dim $Zeilen = 4
    Dim $Abstand = 300
    Dim $Namebreite = 100
    Dim $Namehoehe = 10

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

    ;Diese Fassung ist OK!
    ;~ $Wahl &= "c1 Name1|"
    ;~ $Wahl &= "d2 Name2|"
    ;~ $Wahl &= "e3 Name3|"
    ;~ $Wahl &= "n4 Name4|"

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

    ;Diese Fassung ist falsch, das Bild soll in die gleiche Reihe!

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

    $Wahl &= "c1 Name1/" & @ScriptDir & "\Bild1.jpg|"
    $Wahl &= "d2 Name2/Bild2.jpg|"
    $Wahl &= "e3 Name3/Bild3.jpg|"
    $Wahl &= "n4 Name4/Bild4.jpg|"

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

    $WahlSplit = StringSplit($Wahl, "|")
    Global $Checkbox[$WahlSplit[0]]
    Global $CheckboxName[$WahlSplit[0]]
    Global $arProgress[$WahlSplit[0]]
    Global $arPic[$WahlSplit[0]]

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

    _ArrayDisplay($wahlsplit)
    For $i = 1 To $WahlSplit[0]-1
    If $i > 2 Then
    If Mod($i - 1, $reihenAnzahl) = 0 Then $spaltenNr += 1
    EndIf
    $name = _StringBetween($wahlsplit[$i]," ","/")
    $pic = _StringBetween($wahlsplit[$i],"/","")

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

    $Checkbox[$i] = GUICtrlCreateCheckbox($name[0], $Links + Int(($i-1) / $Zeilen) * $Abstand, $oben + Mod(($i-1), $Zeilen) * $Zwischen, $Namebreite, $Namehoehe)
    GUICtrlSetFont(-1, 10, 500, 0, "Arial")
    $arProgress[$i] = GUICtrlCreateProgress($Links + 100 + Int(($i-1) / $Zeilen) * $Abstand, $Oben + Mod(($i-1), $Zeilen) * $Zwischen, $Namebreite, $Namehoehe)
    $arPic [$i]= GUICtrlCreatePic($pic [0],$Links + 100 + Int(($i-1) / $Zeilen) * $Abstand+$Namebreite, $Oben + Mod(($i-1), $Zeilen) * $Zwischen, $Namebreite,50)

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

    Next

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

    EndFunc

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