Conseils

Utiliser les contrôles de fichier et de répertoire Delphi pour imiter l'Explorateur Windows

Utiliser les contrôles de fichier et de répertoire Delphi pour imiter l'Explorateur Windows

L'Explorateur Windows est ce que vous utilisez dans le système d'exploitation Windows pour rechercher des fichiers et des dossiers. Vous pouvez créer une structure similaire avec Delphi afin que le même contenu soit rempli dans l'interface utilisateur de votre programme.

Les boîtes de dialogue courantes sont utilisées dans Delphi pour ouvrir et enregistrer un fichier dans une application. Si vous souhaitez utiliser des gestionnaires de fichiers personnalisés et des boîtes de dialogue de navigation dans les répertoires, vous devez gérer les composants Delphi du système de fichiers.

Le groupe de palettes Win 3.1 VCL comprend plusieurs composants qui vous permettent de créer votre propre boîte de dialogue personnalisée "File Open" ou "File Save": TFileListBox, TDirectoryListBox, TDriveComboBox, et TFilterComboBox.

Navigation dans les fichiers

Les composants du système de fichiers nous permettent de sélectionner un lecteur, de consulter la structure hiérarchique des répertoires d'un disque et de voir les noms des fichiers d'un répertoire donné. Tous les composants du système de fichiers sont conçus pour fonctionner ensemble.

Par exemple, votre code vérifie ce que l'utilisateur a fait pour, par exemple, un DriveComboBox, puis transmet ces informations à un DirectoryListBox. Les modifications apportées à DirectoryListBox sont ensuite transmises à un FileListBox dans lequel l'utilisateur peut sélectionner le ou les fichiers nécessaires.

Conception du formulaire de dialogue

Démarrez une nouvelle application Delphi et sélectionnez l’onglet Win 3.1 de la palette de composants. Ensuite, procédez comme suit:

  • Placez un composant TFileListBox, TDirectoryListBox, TDriveComboBox et TFilterComboBox sur une fiche, en conservant tous leurs noms par défaut.
  • Ajoutez un TEdit (nommé "FileNameEdit") et un TLabel (appelez-le "DirLabel").
  • Incluez quelques étiquettes avec des légendes, telles que "Nom du fichier", "Répertoire", "Liste des types de fichiers" et "Lecteurs".

Pour afficher le chemin actuellement sélectionné sous forme de chaîne dans une légende de composant DirLabel, attribuez le nom de l'étiquette à la propriété DirectoryListBox. Propriété DirLabel.

Si vous souhaitez afficher le nom de fichier sélectionné dans un EditBox (FileNameEdit), vous devez affecter le nom de l'objet Edit (FileNameEdit) à celui de la FileListBox. Propriété FileEdit.

Plus de lignes de code

Lorsque vous avez tous les composants du système de fichiers sur le formulaire, il vous suffit de définir les propriétés DirectoryListBox.Drive et FileListBox.Directory pour que les composants communiquent et affichent ce que l'utilisateur souhaite voir.

Par exemple, lorsque l’utilisateur sélectionne un nouveau lecteur, Delphi active le DriveComboBox OnChange gestionnaire d'événements. Faites-le ressembler à ceci:

 procédure TForm1.DriveComboBox1Change (Sender: TObject);
commencer
DirectoryListBox1.Drive: = DriveComboBox1.Drive;
fin
;

Ce code modifie l'affichage dans le DirectoryListBox en activant son Sur le changement gestionnaire d'événements:

 procédure TForm1.DirectoryListBox1Change (Sender: TObject);
commencer
FileListBox1.Directory: = DirectoryListBox1.Directory;
fin
;

Pour voir le fichier sélectionné par l'utilisateur, vous devez utiliser le OnDblClick événement du FileListBox:

 procédure TForm1.FileListBox1DblClick (Sender: TObject);
commencer
Showmessage ('Selected:' + FileListBox1.FileName);
fin;

Rappelez-vous que la convention Windows consiste à avoir un double-clic pour choisir le fichier, pas un simple clic. Ceci est important lorsque vous travaillez avec un FileListBox car utiliser une touche fléchée pour vous déplacer dans un FileListBox appellera n'importe quel gestionnaire OnClick que vous avez écrit.

Filtrer l'affichage

Utilisez un FilterComboBox pour contrôler le type de fichiers affichés dans un FileListBox. Après avoir défini la propriété FileList de la FilterComboBox sur le nom d'une FileListBox, définissez la propriété Filter sur les types de fichiers que vous souhaitez afficher.

Voici un exemple de filtre:

FilterComboBox1.Filter: = 'Tous les fichiers (*. *) | *. * | Fichiers de projet (* .dpr) | * .dpr | Unités Pascal (* .pas) | * .pas ';

Trucs et astuces

La définition de la propriété DirectoryListBox.Drive et de la propriété FileListBox.Directory (dans les gestionnaires d'événement OnChange précédemment écrits) au moment de l'exécution peut également être effectuée au moment de la conception. Vous pouvez réaliser ce type de connexion au moment de la conception en définissant les propriétés suivantes (à partir de l'inspecteur d'objets):

DriveComboBox1.DirList: = DirectoryListBox1
DirectoryListBox1.FileList: = FileListBox1

Les utilisateurs peuvent sélectionner plusieurs fichiers dans un FileListBox si sa propriété MultiSelect est True. Le code suivant montre comment créer une liste de sélections multiples dans un FileListBox et l'afficher dans un SimpleListBox (un contrôle ListBox "ordinaire").

var k: entier;…
avec
FileListBox1 faire
si
SelCount> 0 puis
pour
k: = 0 à Items.Count-1 faire
si
Selectedk puis
SimpleListBox.Items.Add (Itemsk);

Pour afficher les chemins d'accès complets qui ne sont pas abrégés par des points de suspension, n'attribuez pas de nom d'objet Label à la propriété DirLabel d'un DirectoryListBox. Au lieu de cela, insérez une étiquette dans un formulaire et définissez sa propriété caption dans l'événement OnChange de DirectoryListBox sur la propriété DirectoryListBox.Directory.