Hi,
ich habe eine kleine GUI erstellt.
In dieser wird in einem TreeView ein Ordner ausgewählt.
Dann soll in einer ListView die enthaltenen Dateien aufgelistet werden.
Dies funktioniert soweit.
Leider werden die Dateien erst unsortiert hinzugefügt und dann muß ich sie manuell sortieren. Dies funktioniert auch, jedoch wäre es mir lieber, wenn die Einträge gleich sortiert würden.
Die Daten lese ich über ein Array ein.
Später will ich die Dateien noch in ein anderes ListView verschieben. Jedoch bin ich noch nicht soweit
Spoiler anzeigen
#include <Array.au3>
#Include <GUIConstants.au3>
#include <GuiTreeView.au3>
#Include <File.au3>
#include <GuiListView.au3>
#include <_ArrayDisplay2D.au3>
#include <_ArraySort_2ary.au3>
Global $Tree
Global $SubTree
Global $merken = "\"
Dim $time, $time2, $vergleich
[/autoit] [autoit][/autoit] [autoit];GUI erstellen
$Form1 = GUICreate("Browse", 800, 800)
$TreeView = GUICtrlCreateTreeView(8, 8, 225, 273, BitOR($WS_BORDER,$TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS))
GUICtrlSetImage(-1, "shell32.dll", 3, 4)
GUICtrlSetImage(-1, "shell32.dll", 4, 2)
$ListView = GUICtrlCreateListView("Datei|Datum", 300, 10, 400, 250)
$ok = GUICtrlCreateButton(">>>>>>>>>>>> &Weiter >>>>>>>>>>>>", 8, 288, 227, 25)
$test = GUICtrlCreateButton("TEST", 308, 288, 227, 25)
GUISetState(@SW_SHOW)
;Spaltenbreite für die beiden Spalten festlegen
_GUICtrlListViewSetColumnWidth($listview, 0, 200)
_GUICtrlListViewSetColumnWidth($listview, 1, 50)
;Laufwerk
$HDDrives = "V:"
Search($HDDrives , "*.*")
$var = IniReadSection("Files.ini", $HDDrives & "\")
For $h = 1 To $var[0][0]
$IniRead = IniRead("Files.ini", $HDDrives & "\", $h, "NotFound")
_Next($IniRead, "*.*", $h)
Next
While 1
$msg = GUIGetMsg()
Select
Case $msg = $ok
;~ Run("explorer.exe "& _GUICtrlTreeViewGetTree($TreeView,"\"))
Case $msg = $GUI_EVENT_CLOSE
Exit
Case $msg = $test
EXIT
EndSelect
_check()
WEnd
Func _check()
$vergleich = _GUICtrlTreeViewGetTree($treeview, "\") & "\"
If $merken <> $vergleich Then
_Dateien()
$merken = $vergleich
Else
EndIf
EndFunc ;==>_check
Func _Dateien()
_GUICTRLListViewDeleteAllItems($listview)
$vergleich = _GUICtrlTreeViewGetTree($treeview, "\") & "\"
;Größe des Arrays anhand von vorhandenen Dateien einstellen
$anzahl = DirGetSize($vergleich, 3)
;Array ($Filelist) erzeugen (nur Dateinamen)
Dim $array_quelle = 0
Dim $array_quelle[$anzahl[1] + 1][2]
$array = _FileListToArray($vergleich, "*", 1)
;Array ($array_quelle) erzeugen (Dateinamen von $Filelist und Datum)
For $i = 1 to UBound($array)-1
$array_quelle[$i][0] = $array[$i]
$time = FileGetTime($vergleich & $array[$i], 0)
$array_quelle[$i][1] = $time[2] & "." & $time[1] & "." & $time[0] & " " & $time[3] & ":" & $time[4] & ":" & $time[5]
Next
_ArraySort_2ary($array_quelle,0,0)
;~ _ArrayDisplay2D($array_quelle,"$array_quelle")
;Einträge für ListView vornehmen (Datei und Datum)
For $i = 1 To UBound($array) - 1
$time = FileGetTime($vergleich & $array[$i], 0)
$datum = $time[2] & "." & $time[1] & "." & $time[0] & " " & $time[3] & ":" & $time[4] & ":" & $time[5]
GUICtrlCreateListViewItem($array[$i] & "|" & $datum, $listview)
Next
;Einträge vom ListView sortieren
Dim $B_DESCENDING[_GUICtrlListViewGetSubItemsCount($listview) ];$B_DESCENDING
_GUICtrlListViewSort($listview, $B_DESCENDING, 0); $B_DESCENDING
;~ _GUICtrlListViewSort($listview, $B_DESCENDING, 0); $B_DESCENDING (wenn andersrum sortieren, dann deaktivieren)
EndFunc
;Functions
;///////////////////////////////////////////
Func Search($SearchPath, $FileType)
$Item1 = GUICtrlCreateTreeViewItem(StringUpper($SearchPath), $TreeView)
GUICtrlSetImage(-1, "shell32.dll",
$SearchPath &= "\"
$Search = FileFindFirstFile($SearchPath & $FileType)
If $Search = -1 Then
MsgBox(0, "Error", "No files/directories matched the search pattern")
Exit
EndIf
$Count = 1
Dim $Tree[99999]
While 1
$File = FileFindNextFile($Search)
If @error Then ExitLoop
$Attrib = FileGetAttrib($SearchPath & $File)
If StringInStr($Attrib, "D") Then
$Tree[$Count] = GUICtrlCreateTreeViewItem($File, $Item1)
IniWrite("Files.ini", $SearchPath, $Count, $SearchPath & $File & "\")
$Count = $Count + 1
EndIf
WEnd
FileClose($Search)
EndFunc ;==>Search
Func _Next($SearchPath, $FileType, $Number)
$Search1 = FileFindFirstFile($SearchPath & $FileType)
If $Search1 = -1 Then
Else
$Count = 1
Dim $SubTree[99999]
While 1
$NextFile = FileFindNextFile($Search1)
If @error Then ExitLoop
$Attrib = FileGetAttrib($SearchPath & $NextFile)
If $Attrib = "D" Then;StringInStr($Attrib,"D") Then
If $NextFile = "." Or $NextFile = ".." Then
Else
$FBuffer = $SearchPath & $NextFile & "\"
$SubTree[$Count] = GUICtrlCreateTreeViewItem($NextFile, $Tree[$Number])
$Search2 = FileFindFirstFile($FBuffer & "*.*")
If $Search2 = -1 Then
;~ msgbox(0,"","Ingen mapper")
Else
$Count1 = 1
While 1
$NextFile2 = FileFindNextFile($Search2)
If @error Then ExitLoop
$Attrib = FileGetAttrib($FBuffer & $NextFile2)
If $Attrib = "D" Then;StringInStr($Attrib,"D") Then
If $NextFile2 = "." Or $NextFile2 = ".." Then
Else
GUICtrlCreateTreeViewItem($NextFile2, $SubTree[$Count])
$Count1 = $Count1 + 1
EndIf
EndIf
WEnd
FileClose($Search2)
EndIf
;msgbox(0,"","Stop " & $Count)
$Count = $Count + 1
EndIf
EndIf
WEnd
FileClose($Search1)
EndIf
EndFunc ;==>_Next