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.
Des boîtes de dialogue communes 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 "Ouverture de fichier" ou "Enregistrement de fichier": TFileListBox, TDirectoryListBox, TDriveComboBox, et TFilterComboBox.
Navigation dans les fichiers
Les composants du système de fichiers nous permettent de sélectionner un lecteur, de voir la structure de répertoire hiérarchique d'un disque et de voir les noms des fichiers dans 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, disons, 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
Recommencer à nouveau Application Delphi et sélectionnez l'onglet Win 3.1 du Palette de composants. Procédez ensuite 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").
- Inclure quelques étiquettes avec des légendes, comme "Nom de fichier", "Répertoire", "Liste des fichiers de type" et "Lecteurs".
Pour afficher le chemin d'accès actuellement sélectionné sous forme de chaîne dans une légende de composants DirLabel, attribuez le nom de l'étiquette aux répertoires de DirectoryListBox. Propriété DirLabel.
Si vous souhaitez afficher le nom de fichier sélectionné dans un EditBox (FileNameEdit), vous devez attribuer le nom de l'objet Edit (FileNameEdit) aux 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 DirectoryListBox. Propriété Drive et FileListBox. Propriété d'annuaire pour que les composants communiquent et montrent 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 comme ça:
procédure TForm1.DriveComboBox1Change (expéditeur: TObject);
beginDirectoryListBox1.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 (expéditeur: TObject);
beginFileListBox1.Directory: = DirectoryListBox1.Directory;
fin;
Pour voir quel fichier l'utilisateur a sélectionné, vous devez utiliser le OnDblClick événement du FileListBox:
procédure TForm1.FileListBox1DblClick (Sender: TObject);
beginShowmessage ('Selected:' + FileListBox1.FileName);
fin;
N'oubliez pas que la convention Windows consiste à faire un double-clic pour choisir le fichier, pas un seul clic. Ceci est important lorsque vous travaillez avec un FileListBox car l'utilisation d'une touche fléchée pour vous déplacer dans un FileListBox appelerait n'importe quel gestionnaire OnClick que vous avez écrit.
Filtrage de 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 FilterComboBox sur le nom d'un 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
Définition de DirectoryListBox. Propriété Drive et FileListBox. La propriété de répertoire (dans les gestionnaires d'événements 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 du design 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 une 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 do
si SelCount> 0 alors
pour k: = 0 aux articles. Count-1 do
si sélectionné [k] alors
SimpleListBox. Articles. Ajouter (éléments [k]);
Pour afficher les noms de chemin d'accès complets qui ne sont pas raccourcis par des points de suspension, n'affectez 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é de légende dans l'événement OnChange de DirectoryListBox sur DirectoryListBox. Propriété d'annuaire.