Windows Explorer ist das, was Sie im Windows-Betriebssystem verwenden, um nach Dateien und Ordnern zu suchen. Sie können mit Delphi eine ähnliche Struktur erstellen, sodass derselbe Inhalt in der Benutzeroberfläche Ihres Programms angezeigt wird.
In Delphi to werden allgemeine Dialogfelder verwendet Öffnen und speichern Sie eine Datei in einer Anwendung. Wenn Sie angepasste Dateimanager und Dialogfelder zum Durchsuchen von Verzeichnissen verwenden möchten, müssen Sie sich mit Delphi-Komponenten des Dateisystems befassen.
Die Win 3.1 VCL-Palettengruppe enthält mehrere Komponenten, mit denen Sie Ihr eigenes benutzerdefiniertes Dialogfeld "Datei öffnen" oder "Datei speichern" erstellen können: TFileListBox, TDirectoryListBox, TDriveComboBox, und TFilterComboBox.
Dateien navigieren
Mit den Dateisystemkomponenten können wir ein Laufwerk auswählen, die hierarchische Verzeichnisstruktur einer Festplatte anzeigen und die Namen der Dateien in einem bestimmten Verzeichnis anzeigen. Alle Dateisystemkomponenten arbeiten zusammen.
Ihr Code überprüft beispielsweise, was der Benutzer beispielsweise mit einer DriveComboBox getan hat, und leitet diese Informationen dann an eine DirectoryListBox weiter. Die Änderungen in DirectoryListBox werden dann an eine FileListBox übergeben, in der der Benutzer die benötigten Dateien auswählen kann.
Entwerfen des Dialogformulars
Von neuem beginnen Delphi-Anwendung und wählen Sie die Registerkarte Win 3.1 der Komponentenpalette. Dann machen Sie folgendes:
- Platzieren Sie eine TFileListBox-, TDirectoryListBox-, TDriveComboBox- und TFilterComboBox-Komponente in einem Formular, wobei Sie alle Standardnamen beibehalten
- Fügen Sie ein TEdit (mit dem Namen "FileNameEdit") und eines hinzu TLabel (nenne es "DirLabel").
- Fügen Sie einige Beschriftungen mit Beschriftungen hinzu, z. B. "Dateiname", "Verzeichnis", "Dateityp auflisten" und "Laufwerke".
Um den aktuell ausgewählten Pfad als Zeichenfolge in einer DirLabel-Komponentenbeschriftung anzuzeigen, weisen Sie den DirectoryListBox-Namen den Namen des Labels zu DirLabel-Eigenschaft.
Wenn Sie den ausgewählten Dateinamen in einer EditBox (FileNameEdit) anzeigen möchten, müssen Sie den FileListBox den Namen des Edit-Objekts (FileNameEdit) zuweisen FileEdit-Eigenschaft.
Weitere Codezeilen
Wenn Sie alle Dateisystemkomponenten im Formular haben, müssen Sie nur die DirectoryListBox festlegen. Laufwerkseigenschaft und die FileListBox. Verzeichniseigenschaft, damit die Komponenten kommunizieren und zeigen, was der Benutzer sehen möchte.
Wenn der Benutzer beispielsweise ein neues Laufwerk auswählt, aktiviert Delphi das DriveComboBox OnChange Event-Handler. Lass es so aussehen:
Prozedur TForm1.DriveComboBox1Change (Absender: TObject);
beginDirectoryListBox1.Drive: = DriveComboBox1.Drive;
Ende;
Dieser Code ändert die Anzeige in der DirectoryListBox durch Aktivieren seiner Bei Änderung Event-Handler:
procedure TForm1.DirectoryListBox1Change (Sender: TObject);
beginFileListBox1.Directory: = DirectoryListBox1.Directory;
Ende;
Um zu sehen, welche Datei der Benutzer ausgewählt hat, müssen Sie die verwenden OnDblClick Ereignis der FileListBox:
Prozedur TForm1.FileListBox1DblClick (Absender: TObject);
beginShowmessage ('Ausgewählt:' + FileListBox1.FileName);
Ende;
Denken Sie daran, dass nach der Windows-Konvention ein Doppelklick die Datei auswählen muss, nicht ein einzelner Klick. Dies ist wichtig, wenn Sie mit einer FileListBox arbeiten, da die Verwendung einer Pfeiltaste zum Durchlaufen einer FileListBox jeden von Ihnen geschriebenen OnClick-Handler aufruft.
Anzeige filtern
Verwenden Sie eine FilterComboBox, um den Dateityp zu steuern, der in einer FileListBox angezeigt wird. Nachdem Sie die FileList-Eigenschaft der FilterComboBox auf den Namen einer FileListBox festgelegt haben, setzen Sie die Filter-Eigenschaft auf die Dateitypen, die Sie anzeigen möchten.
Hier ist ein Beispielfilter:
FilterComboBox1.Filter: = 'Alle Dateien (*. *) | *. * | Projektdateien (* .dpr) | * .dpr | Pascal-Einheiten (* .pas) | * .pas ';
Hinweise und Tipps
Festlegen der DirectoryListBox. Laufwerkseigenschaft und die FileListBox. Die Directory-Eigenschaft (in den zuvor geschriebenen OnChange-Ereignishandlern) zur Laufzeit kann auch zur Entwurfszeit ausgeführt werden. Sie können diese Art der Verbindung zur Entwurfszeit herstellen, indem Sie die folgenden Eigenschaften festlegen (im Objektinspektor):
DriveComboBox1.DirList: = DirectoryListBox1
DirectoryListBox1.FileList: = FileListBox1
Benutzer können mehrere Dateien in einer FileListBox auswählen, wenn die MultiSelect-Eigenschaft True ist. Der folgende Code zeigt, wie Sie eine Liste mit mehreren Auswahlen in einer FileListBox erstellen und in einer SimpleListBox (einem "normalen" ListBox-Steuerelement) anzeigen.
var k: integer; ...
mit FileListBox1 tun
wenn SelCount> 0 dann
für k: = 0 zu Items. Count-1 tun
wenn ausgewählt [k] dann
SimpleListBox. Artikel. Add (Items [k]);
Weisen Sie der DirLabel-Eigenschaft einer DirectoryListBox keinen Label-Objektnamen zu, um vollständige Pfadnamen anzuzeigen, die nicht mit Auslassungspunkten gekürzt sind. Fügen Sie stattdessen eine Beschriftung in ein Formular ein und setzen Sie die Beschriftungseigenschaft im OnChange-Ereignis der DirectoryListBox auf die DirectoryListBox. Verzeichniseigenschaft.