Dateistruktur als TreeView

  • Hallo,

    Ich bin gerade dabei zu probieren wie ich die Dateistruktur als TreeView anzeigen lassen kann. Die erste "Ebene" geht noch. Danach werden keine unterordner mehr angezeigt außer programme(merkwürdigerweise).
    Ich weiß die "erkennung" für ordner ist noch etwas primitiv.
    Also ich vermute das problem bei der Bezeichung der items, sodass die unterdateien eines ordner nicht mehr diesem zugeordnet werden.
    Könnt ihr mir helfen?

    Lukas

    Spoiler anzeigen


    #include <GUIConstants.au3>
    global $path[1000][1000]

    GUICreate("Ordner",500,700)
    $treeview = GUICtrlCreateTreeView(6, 6, 300, 600, BitOr($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE)
    $main = GUICtrlCreateTreeViewitem("C:", $treeview)
    $label=GUICtrlCreateLabel("",10,620,200,20)
    list("C:",$main,1)

    GUISetState()


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


    EndSwitch
    WEnd
    func list($dir,$list,$sub)
    $search = FileFindFirstFile($dir&"/*.*")
    for $i = 1 to 1000
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    $path[$i][$sub] = GUICtrlCreateTreeViewitem($file, $list)
    if Not StringInStr($file,".") Then list($file,$path[$i][$sub],$i)
    GUICtrlSetData($label,$i)
    Next

    EndFunc


    • Offizieller Beitrag

    Hi,

    Spoiler anzeigen
    [autoit]

    ;dirTreeMScreator.au3; mod randallc
    #include <GuiTreeView.au3>
    Global $splash, $bgcolor = 0x404040, $txtcolor = 0xff8800, $extcolor = 0xffcc00, $items[4000], $names[4000], $StartDir

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

    $Main = GUICreate("DirView", 500, 430, -1, -1)
    $Tree = GUICtrlCreateTreeView(24 + 32, 4, 400, 422)
    $StartDir = @ScriptDir
    ;~ $StartDir = @StartMenuDir
    $TrreViewOfprograms = GUICtrlCreateTreeViewItem($StartDir, $Tree)
    $TimerStamp = TimerInit()
    MakeList($StartDir, $TrreViewOfprograms, 0)
    MakeList($StartDir, $TrreViewOfprograms, 1)
    ReDim $items[$items[0] + 1]
    ReDim $names[$names[0] + 1]
    ConsoleWrite("$TimerStamp=" & Round(TimerDiff($TimerStamp)) & @LF)
    ConsoleWrite("$items[0]+1=" & $items[0] + 1 & @LF)
    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case Else
    If $msg >= $items[1] And $msg <= $items[UBound($items) - 1] Then ishidden(_GUICtrlTreeViewGetTree($Tree, "\"))
    Sleep(20)
    EndSwitch
    WEnd
    Func MakeList($dir, $TreeViewOfprograms, $mode = 0)
    FileChangeDir($dir)
    $search = FileFindFirstFile("*.*")
    While 1
    $file = FileFindNextFile($search);
    If @error Then ExitLoop
    $GetExt = GetExt($dir & "\" & $file)
    If $items[0] > 3998 Then ExitLoop
    If $GetExt <> "folder" And $mode = 1 And $GetExt <> "ini" Then;And $GetExt <> "lnk" And $GetExt <> "ini"
    $items[0] += 1
    $names[0] += 1
    $items[ $items[0] ] = GUICtrlCreateTreeViewItem($file, $TreeViewOfprograms)
    $names[ $names[0] ] = $file;$file$dir & "\" &
    GUICtrlSetColor($items[ $items[0]], $txtcolor)
    ElseIf $GetExt = "folder" And $mode = 0 Then;And $GetExt <> "INI"
    $TreevieItemNow = GUICtrlCreateTreeViewItem($file, $TreeViewOfprograms)
    $items[0] += 1
    $names[0] += 1
    $items[ $items[0] ] = $TreevieItemNow
    $names[ $names[0] ] = $file;$file;$dir & "\" &
    GUICtrlSetColor($items[ $items[0]], $extcolor)
    MakeList($dir & "\" & $file, $TreevieItemNow, 0)
    MakeList($dir & "\" & $file, $TreevieItemNow, 1)
    EndIf
    WEnd
    FileClose($search)
    EndFunc ;==>MakeList
    Func GetExt($file)
    If StringInStr(FileGetAttrib($file), "D") Then Return "folder"
    Return StringUpper(StringTrimLeft($file, StringInStr($file, ".", 0, -1))) ;return only extension
    EndFunc ;==>GetExt

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

    Func ishidden($file)
    Local $attrib
    $attrib = FileGetAttrib($file)
    MsgBox(0, "", $file & @CRLF & "Properties: " & $attrib)
    If StringInStr($attrib, "H") Then Return 1
    Return 0
    EndFunc ;==>ishidden

    [/autoit]

    So long,

    Mega

  • Schonmal vielen dank!
    Ist zwar noch nicht ganz das was ich will.
    Aber irgendwie funktioniert das script noch nicht ganz, Es zeigt nähmlich nur ordner mit "a "an (im ersten unterordner). Außerdem soll es auch noch die dateien anzeigen(Also praktisch wie der Explorer)

    Lukas