Eksplorator Windows jest tym, czego używasz w systemie operacyjnym Windows do przeglądania plików i folderów. Możesz stworzyć podobną strukturę za pomocą Delphi, aby ta sama treść była wypełniana w interfejsie użytkownika programu.
Typowe okna dialogowe są używane w Delphi do otwórz i zapisz plik w aplikacji. Jeśli chcesz korzystać z niestandardowych menedżerów plików i okien dialogowych przeglądania katalogów, musisz poradzić sobie ze składnikami systemu plików Delphi.
Grupa palet VCL systemu Windows 3.1 zawiera kilka składników, które pozwalają zbudować własne okno dialogowe „Otwórz plik” lub „Zapisz plik”: TFileListBox, TDirectoryListBox, TDriveComboBox, i TFilterComboBox.
Nawigacja po plikach
Komponenty systemu plików pozwalają nam wybrać dysk, przejrzeć hierarchiczną strukturę katalogów dysku i zobaczyć nazwy plików w danym katalogu. Wszystkie składniki systemu plików są zaprojektowane do współpracy.
Na przykład kod sprawdza, co użytkownik zrobił, powiedzmy, DriveComboBox, a następnie przekazuje te informacje do DirectoryListBox. Zmiany w DirectoryListBox są następnie przekazywane do FileListBox, w którym użytkownik może wybrać potrzebne pliki.
Projektowanie formularza dialogu
Zacząć od nowa Aplikacja Delphi i wybierz kartę Win 3.1 Paleta komponentów. Następnie wykonaj następujące czynności:
- Umieść jeden formularz TFileListBox, TDirectoryListBox, TDriveComboBox i TFilterComboBox w formularzu, zachowując wszystkie ich nazwy domyślne
- Dodaj jeden TEdit (o nazwie „FileNameEdit”) i jeden TLabel (nazwij to „DirLabel”).
- Dołącz kilka etykiet z podpisami, takich jak „Nazwa pliku”, „Katalog”, „Lista plików typu” i „Dyski”.
Aby pokazać aktualnie wybraną ścieżkę jako ciąg w podpisie składników DirLabel, przypisz nazwę Label do DirectoryListBox's Właściwość DirLabel.
Jeśli chcesz wyświetlić wybraną nazwę pliku w EditBox (FileNameEdit), musisz przypisać nazwę obiektu Edit (FileNameEdit) do FileListBox's Właściwość FileEdit.
Więcej linii kodu
Gdy masz wszystkie składniki systemu plików w formularzu, wystarczy ustawić DirectoryListBox. Właściwość Drive i FileListBox. Właściwość katalogu, aby składniki mogły się komunikować i pokazywać to, co użytkownik chce zobaczyć.
Na przykład, gdy użytkownik wybierze nowy dysk, Delphi aktywuje DriveComboBox OnChange moduł obsługi zdarzeń. Niech to wygląda tak:
procedura TForm1.DriveComboBox1Change (Sender: TObject);
beginDirectoryListBox1.Drive: = DriveComboBox1.Drive;
koniec;
Ten kod zmienia sposób wyświetlania w DirectoryListBox poprzez aktywację jego OnChange organizator wydarzeń:
Procedura TForm1.DirectoryListBox1Change (Sender: TObject);
beginFileListBox1.Directory: = DirectoryListBox1.Directory;
koniec;
Aby zobaczyć, jaki plik wybrał użytkownik, musisz użyć OnDblClick wydarzenie FileListBox:
Procedura TForm1.FileListBox1DblClick (Sender: TObject);
beginShowmessage ('Selected:' + FileListBox1.FileName);
koniec;
Pamiętaj, że konwencja systemu Windows polega na dwukrotnym kliknięciu pliku, a nie pojedynczym kliknięciu. Jest to ważne, gdy pracujesz z FileListBox, ponieważ użycie klawisza strzałki do poruszania się po FileListBox wywołałoby dowolny napisany przez ciebie moduł obsługi OnClick.
Filtrowanie wyświetlacza
Użyj FilterComboBox, aby kontrolować typ plików wyświetlanych w FileListBox. Po ustawieniu właściwości FileList FilterComboBox na nazwę FileListBox, ustaw właściwość Filter na typy plików, które chcesz wyświetlić.
Oto przykładowy filtr:
FilterComboBox1.Filter: = 'Wszystkie pliki (*. *) | *. * | Pliki projektu (* .dpr) | * .dpr | Jednostki pascal (* .pas) | * .pas ';
Porady i wskazówki
Ustawianie DirectoryListBox. Właściwość Drive i FileListBox. Właściwość katalogu (we wcześniej napisanych procedurach obsługi zdarzeń OnChange) w czasie wykonywania można również wykonać w czasie projektowania. Możesz wykonać tego rodzaju połączenie w czasie projektowania, ustawiając następujące właściwości (z Inspektora obiektów):
DriveComboBox1.DirList: = DirectoryListBox1
DirectoryListBox1.FileList: = FileListBox1
Użytkownicy mogą wybrać wiele plików w FileListBox, jeśli właściwość MultiSelect ma wartość True. Poniższy kod pokazuje, jak utworzyć listę wielu selekcji w FileListBox i pokazać ją w SimpleListBox (niektóre „zwykłe” kontrolki ListBox).
var k: integer; ...
z FileListBox1 do
jeśli SelCount> 0, to
dla k: = 0 do pozycji. Count-1 do
jeśli wybrano [k], to
SimpleListBox. Przedmiotów. Dodaj (elementy [k]);
Aby wyświetlić pełne nazwy ścieżek, które nie są skracane za pomocą wielokropka, nie należy przypisywać nazwy obiektu Label do właściwości DirLabel DirectoryListBox. Zamiast tego wstaw etykietę do formularza i ustaw właściwość caption w zdarzeniu OnChange DirectoryListBox na DirectoryListBox. Właściwość katalogu.