Problem mit einer Schleife / TreeView auslesen

  • Hallo zusammen.

    ich hab gerade total den hänger und stehe "eigentlich" vor einen sehr einfachen Problem und ich weiß gerade echt nicht wie ich es lösen soll:

    Ich benutze die Funktion _GetFileList
    und übergebe die gefunden Dateien in einen TreeView mit Checkboxen.

    In der Schleife steht folgendes:

    [autoit]


    $FILES = _GetFileList($DIR, $FILEMASK)
    For $X = 0 To UBound($FILES)-1
    FileWriteLine("Archive.txt",$FILES[$X])
    Next
    $archivetree = GUICtrlCreateTreeView (15, 450, 150, 200,$TVS_CHECKBOXES)
    $searchres = FileReadLine("Archive.txt", 1)
    $archiveline = 2
    While 1
    $archivename = FileReadLine("Archive.txt", $archiveline)
    $test = GUICtrlCreateTreeViewItem($archivename, $archivetree)
    $archiveline = $archiveline +1
    If $searchres < $archiveline Then
    ExitLoop
    EndIf
    WEnd

    [/autoit]


    So nun zu meinen Problem,
    die gefunden Dateien werden an den Treeview übergeben aber leider kann ich diese nicht per GUI Checked auswerten da ich net weiß wie ich der jeweiligen Datei eine ID zuweise, ich bin einfach zu blöd dazu

    Ich müsste eigentlich die Variable $test jedesmal um einen Wert erhöhen wenn sie die schleife durchläuft aber ich weiß jetzt gerade net wie (klar $variable +1 geht hier ja nicht) wie kann ich das lösen das ich am schluss das ganze mit

    [autoit]


    If BitAND(GUICtrlRead($archivetree), $GUI_CHECKED) Then
    MsgBox(64, "Checked", "test")
    EndIf

    [/autoit]


    auswerten kann

  • Moin,

    wieso benutzt du eine Datei als Zwischenspeicher?
    Du solltest ein Array mit der entsprechenden Größe anlegen und dann in der For-Schleife die TreeViewItems dem Array zuweisen, also :

    [autoit]

    Dim $TreeViewItems[UBound($FILES) - 1]
    For $X = 0 To UBound($FILES) - 1
    $TreeViewItems[$X] = GUICtrlCreateTreeViewItem($FILES[$X], $archivetree)
    Next

    [/autoit]

    Dann könntest du mit :

    [autoit]

    If BitAND(GUICtrlRead($TreeViewItems[<Das Item das du brauchst>]), $GUI_CHECKED) Then
    MsgBox(64, "Checked", "test")
    EndIf

    [/autoit]

    prüfen ob das Item gesetzt ist.
    Weiß nicht ob es genau so funktioniert, aber der Ansatz müsste passen.

    • Offizieller Beitrag

    Verwende anstelle von:

    [autoit]

    $test = GUICtrlCreateTreeViewItem($archivename, $archivetree)

    [/autoit]


    ein Array.

    [autoit]

    $arItem[$i] = GUICtrlCreateTreeViewItem($archivename, $archivetree)

    [/autoit]

    Das Array definierst du vorher mit einer max. Anzahl von Elementen, z.B. Dim $arItem[200], oder du mußt es in der Schleife immer mit ReDim anpassen.


    EDIT

    Hurra, Beförderung zum Haudegen ==> mein 500. Post

  • Psst, das hab ich gerade doch schon geschrieben... ;)
    Trotzdem, herzlichen Glückwunsch Haudegen!