Tuto concernant les Array, FileOpenDialog et ListView.
Ce tutoriel consiste à intégrer des chemins d'accès de fichiers dans un ListView. Cette procédure est utilisée dans des logiciels qui permettent de sélectionner des fichiers et les supprimer pour faire le ménage sur le disque dur.
Les logiciels comme l'Ordinateur ( Windows Vista et 7 ) qui permettent d'explorer les disques et gérer les fichiers sont d'autres exemples de logiciels qui intègrent des chemins d'accès de fichiers dans des ListView, surtout quand on affiche ces fichiers avec leurs détails. Leurs noms, leurs tailles, leurs icônes, leurs dates de création ainsi que leurs chemins d'accès sont affichés dans des ListView à plusieurs colonnes. Heureusement, la GUI de ce tuto ne comprend qu'une colonne

Première étape : savoir récupérer les chemins d'accès des fichiers avec un FileOpenDialog
Le script ci dessus permet de découper la chaine de donnée récupérée avec FileOpenDialog, l'intégrer dans un array avec StringSplit et afficher le contenu de cet array avec _ArrayDisplay pour voir comment il se compose et voir quelles données utiliser par la suite.
Utilisez ce script sur des fichiers sans importance !
Code : Tout sélectionner
#include <Array.au3>
$message = "Sélectionnez des fichiers"
$var = FileOpenDialog($message, @DocumentsCommonDir & "\", "Tout types (*.*)", 1 + 4 )
If @error Then
MsgBox(4096,"","Pas de fichiers sélectionnés")
Else
$a=StringSplit($var,"|") ;
_ArrayDisplay($a,"");
EndIf
Sélectionnez un fichier. Il va être intégré dans un array $a grâce à $a=StringSplit($var,"|"), l'array va s'afficher dans un tableau grâce à _ArrayDisplay($a,"") . Remarquez que $a[0] contient la valeur de 1 car il n'y a qu'un seul array $a[1] qui contient le chemin d'accès complet du fichier sélectionné.
La valeur de $a[0] est importante, elle va être utilisée par la suite dans une boucle pour intégrer les chemins d'accès des fichiers dans des ListViewItem.
Sélectionnez ensuite trois fichiers avec le FileOpenDialog, $var contient une chaine qui se compose comme suit :
Lettre du disque:\Non du dossier|Fichier1|Fichier2|Fichier3
$a=StringSplit($var,"|") va ainsi découper la chaine en prenant les | comme point de repère , remarquez ensuite dans le tableau que $a[0] = 4 puisque nous avons récupéré quatre données :
$a[1] = Lettre du disque:\Non du dossier
$a[2] = Fichier1
$a[3] = Fichier2
$a[4] = Fichier3
Remarquez aussi, chose importante, qu' à la fin de « Lettre du disque:\Non du dossier », il n'y a pas de « \ », il faudra penser à le rajouter quand on voudra assembler les chemins d'accès avant de les intégrer dans le ListView.
Seconde étape : Intégration des chemins d'accès dans un ListView.
( Voir les commentaires à l'intérieur du script de la GUI ci dessous, utilisez ce script sur des fichiers sans importance ! )
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ###
$Form1 = GUICreate("Form1", 690, 520, 192, 124) ; création du formulaire.
$ListView1 = GUICtrlCreateListView(" ", 120, 40, 433, 425) ; intégration du ListView et création d'une colonne grâce à " ").
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 429) ; taille de la colonne.
$Add = GUICtrlCreateButton("Add", 256, 472, 161, 41) ; ajout du bouton Add.
GUISetState(@SW_SHOW) ; affichage du formulaire.
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Select
Case $nMsg=$Add ; clic sur le bouton Add
$addfile=FileOpenDialog("Ajouter des fichiers","c:\","Tous types (*.*)",1+4) ; ouverture du FileOpenDialog.
if @error Then ; si il n'y a pas de fichier(s) sélectionné(s).
MsgBox(4096,"","Pas de fichier(s) sélectionné(s)")
Else ; si il y a un ou plusieurs fichier(s) sélectionné(s).
$files=StringSplit($addfile,"|") ; découpage de la sélection ($addfile) en prenant | comme repère en cas de sélection multiple et intégration dans un array ( $files ). Rappel en cas de sélection multiple $addfile = lettre du disque:\nom du dossier|fichier1|fichier2|fichier3 etc...
EndIf
#cs
---------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------
Ici nous entrons dans la section qui permet d'intégrer les chemins d'accès du ou des fichiers dans le ListView grâce à des ListViewItem.
---------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------
#ce
If $files[0]=1 Then ; en cas de sélection d'un fichier, $files[0] contient alors 1 puisqu'il n'y a que $files[1] qui contient le chemin d'accès complet du fichier sélectionné.
$item= GUICtrlCreateListViewItem($files[1],$ListView1) ; création d'un ListViewitem avec le chemin d'accès du fichier contenu dans $files[1].
elseif $files[0]>1 then ; en cas de sélection multiple $files[0] contient alors un nombre qui correspond à autant de $files[] qu'il y a de noms de fichiers dont la lettre du disque et le nom du dossier dans $files[1]. L'array contient les noms des fichiers à partir de $files[2].
for $a=2 to $files[0] ; création d'une boucle pour créer autant de ListViewItem qu'il y a de fichiers.
$item= GUICtrlCreateListViewItem($files[1]&"\"&$files[$a], $ListView1); création des ListViewItem $files[1] correspond à la lettre du disque et au dossier sans le \ à la fin donc on l'ajoute (&"\") puis on intégre le nom du fichier $files[$a], $a commence la boucle à 2 puisque les noms des fichiers se trouvent à partir de $files[2] dans l'array.
Next
EndIf
EndSelect
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
Wend

En espérant avoir été clair dans mes explications et que cela vous serve un jour !