[..] Listes de dossier et sous dossier
Posté : jeu. 28 janv. 2016 18:40
Bonjour à tous.
J’avais besoin d'afficher dans un listview le contenu d'un dossier et de ces sous dossier mais pas de façon recursive.
jusqu’à maintenant j'ai utilisé cette fonction :
Mon problème est que je me suis limité à 4 niveau et si je veux augmenter je dois en rajouter un, je voudrais pouvoir modifier le code afin de ne pas avoir de limite mais en gardant le nombre de niveau indiquer dans l'input.
J’ai essayé différentes façon d’écrire ça mais je n'ai pas encore trouvé, j'espère que vous pourrez m'aider, Merci d'avance
J’avais besoin d'afficher dans un listview le contenu d'un dossier et de ces sous dossier mais pas de façon recursive.
jusqu’à maintenant j'ai utilisé cette fonction :
Code : Tout sélectionner
Func _Explorateur_Create($flag = 0, $sFolder = GUICtrlRead($Cmb_Folder), $GuiRead_Lvl = GUICtrlRead($Inp_Lvl), $sMask = GUICtrlRead($Inp_Ext))
Local $Files_Lvl_0, $Folder_Lvl_0, $Folder_Lvl_1, $Folder_Lvl_2, $Folder_Lvl_3, $Folder_Lvl_4
$LIndex = 0
$arr_Listview_ItemPAth = 0
Dim $arr_Listview_ItemPAth[0]
_GUICtrlListView_DeleteAllItems($ListView1)
If Not _IsChecked($Check_Recursive) Then
If $GuiRead_Lvl >= 0 Then
_ListViewAddFiles(_FileListToArrayRec($sFolder, $sMask, 1, 0, 1, 2))
If $GuiRead_Lvl > 0 Then
$Folder_Lvl_1 = _FileListToArrayRec($sFolder, "*", 2, 0, 1, 2)
For $j = 1 To UBound($Folder_Lvl_1) - 1
_ListViewAddFiles(_FileListToArrayRec($Folder_Lvl_1[$j], $sMask, 1, 0, 1, 2))
If $GuiRead_Lvl > 1 Then
$Folder_Lvl_2 = _FileListToArrayRec($Folder_Lvl_1[$j], "*", 2, 0, 1, 2)
For $k = 1 To UBound($Folder_Lvl_2) - 1
_ListViewAddFiles(_FileListToArrayRec($Folder_Lvl_2[$k], $sMask, 1, 0, 1, 2))
If $GuiRead_Lvl > 2 Then
$Folder_Lvl_3 = _FileListToArrayRec($Folder_Lvl_2[$k], "*", 2, 0, 1, 2)
For $L = 1 To UBound($Folder_Lvl_3) - 1
_ListViewAddFiles(_FileListToArrayRec($Folder_Lvl_3[$L], $sMask, 1, 0, 1, 2))
If $GuiRead_Lvl > 3 Then
$Folder_Lvl_4 = _FileListToArrayRec($Folder_Lvl_3[$L], "*", 2, 0, 1, 2)
For $m = 1 To UBound($Folder_Lvl_4) - 1
_ListViewAddFiles(_FileListToArrayRec($Folder_Lvl_4[$m], $sMask, 1, 0, 1, 2))
Next
EndIf
Next
EndIf
Next
EndIf
Next
EndIf
EndIf
ElseIf _IsChecked($Check_Recursive) Then
_ListViewAddFiles(_FileListToArrayRec($sFolder, $sMask, 1, 1, 1, 2))
EndIf
EndFunc
Func _ListViewAddFiles($FileList)
Local $hIcon, $sAtrib, $sDrive = "", $sDir = "", $sFileName = "", $sExtension = ""
For $n = 1 To UBound($FileList) - 1
$File_Name = $FileList[$n]
If StringInStr($File_Name, "_stripped", 2) Then ContinueLoop
_PathSplit($File_Name, $sDrive, $sDir, $sFileName, $sExtension)
$hIcon = _WinAPI_ShellExtractAssociatedIcon($File_Name, 1)
$Index = _GUIImageList_ReplaceIcon($hImage, -1, $hIcon)
_PathSplit($File_Name, $sDrive, $sDir, $sFileName, $sExtension)
_ArrayAdd($arr_Listview_ItemPAth, $File_Name)
_GUICtrlListView_AddItem($ListView1, $sFileName & $sExtension, _GUIImageList_GetImageCount($hImage) - 1)
$LIndex += 1
Next
_WinAPI_DestroyIcon($hIcon)
EndFunc ;==>_ListViewAdd_FilesAndFolder
J’ai essayé différentes façon d’écrire ça mais je n'ai pas encore trouvé, j'espère que vous pourrez m'aider, Merci d'avance