Windows Explorer je tisto, kar v operacijskem sistemu Windows uporabljate za brskanje po datotekah in mapah. Podobno strukturo lahko ustvarite z Delphi, tako da se v uporabniškem vmesniku vašega programa napolni enaka vsebina.
V Delphiju se uporabljajo običajna pogovorna okna odprite in shranite datoteko v aplikacijo. Če želite uporabiti prilagojene upravitelje datotek in pogovorna okna brskanja po imenikih, se morate spopasti s komponentami Delphi datotečnega sistema.
Skupina palet VCL Win 3.1 vključuje več komponent, ki omogočajo izdelavo lastnega pogovornega okna "File Open" ali "File Save": TFileListBox, TDirectoryListBox, TDriveComboBox, in TFilterComboBox.
Navigacija do datotek
Sestavni deli datotečnega sistema nam omogočajo izbiro pogona, ogled hierarhične strukture imenika na disku in ogled imen datotek v določenem imeniku. Vse komponente datotečnega sistema so zasnovane tako, da delujejo skupaj.
Na primer, koda preveri, kaj je uporabnik storil, recimo, DriveComboBox in nato te podatke posreduje v DirectoryListBox. Spremembe v DirectoryListBox se nato prenesejo v FileListBox, v katerem lahko uporabnik izbere potrebne datoteke.
Oblikovanje dialoškega obrazca
Začnite novo Aplikacija Delphi in izberite zavihek Win 3.1 v Paleta komponent. Nato naredite naslednje:
- V obrazec postavite eno komponento TFileListBox, TDirectoryListBox, TDriveComboBox in TFilterComboBox in obdržite vsa privzeta imena
- Dodajte en TEdit (imenovan "FileNameEdit") in enega TLabel (pokličite ga "DirLabel").
- Vključite nekaj oznak z napisi, kot so "Ime datoteke", "Imenik", "Seznam datotek vrste" in "Pogoni".
Če želite trenutno izbrano pot prikazati kot niz v napisu komponent DirLabel, ime oznake dodelite imenikom DirectoryListBox Lastnost DirLabel.
Če želite izbrano ime datoteke prikazati v programu EditBox (FileNameEdit), morate ime urejenega predmeta (FileNameEdit) dodeliti datoteki FileListBox Lastnost FileEdit.
Več vrstic kode
Ko imate vse obrazce datotečnega sistema na obrazcu, morate preprosto nastaviti DirectoryListBox. Lastnost pogona in FileListBox. Lastnost imenika, da lahko komponente komunicirajo in pokažejo, kaj želi uporabnik videti.
Na primer, ko uporabnik izbere nov pogon, Delphi aktivira DriveComboBox OnChange obdelovalec dogodkov. Naj bo videti tako:
postopek TForm1.DriveComboBox1Change (Pošiljatelj: TObject);
beginDirectoryListBox1.Drive: = DriveComboBox1.Drive;
konec;
Ta koda spremeni zaslon v DirectoryListBox z aktiviranjem svojega OnChange Vodja dogodkov:
postopek TForm1.DirectoryListBox1Change (Pošiljatelj: TObject);
beginFileListBox1.Directory: = DirectoryListBox1.Directory;
konec;
Če želite videti, katero datoteko je izbral uporabnik, morate uporabiti OnDblClick dogodek FileListBox:
postopek TForm1.FileListBox1DblClick (Pošiljatelj: TObject);
beginShowmessage ('Izbrano:' + FileListBox1.FileName);
konec;
Ne pozabite, da je sistem Windows dvoten klik, da izberete datoteko in ne en sam klik. To je pomembno, ko delate z FileListBoxom, ker bi s puščico za premikanje po FileListBox poklicali katerikoli OnClick rokovalnik, ki ste ga napisali.
Filtriranje zaslona
Uporabite FilterComboBox za nadzor vrste datotek, ki so prikazane v FileListBoxu. Ko nastavite lastnost FileList FilterComboBox na ime FileListBox, nastavite lastnost Filter na vrste datotek, ki jih želite prikazati.
Tu je primer vzorčnega filtra:
FilterComboBox1.Filter: = 'Vse datoteke (*. *) | *. * | Projektne datoteke (* .dpr) | * .dpr | Pascal enote (* .pas) | * .pas ';
Namigi in nasveti
Nastavitev imenikaListBox. Lastnost pogona in FileListBox. Lastnost imenika (v predhodno napisanih obdelovalcih dogodkov OnChange) med izvajanjem se lahko opravi tudi v času načrtovanja. Tovrstno povezavo lahko vzpostavite v času načrtovanja, tako da nastavite naslednje lastnosti (od Object Inspector):
DriveComboBox1.DirList: = DirectoryListBox1
DirectoryListBox1.FileList: = FileListBox1
Uporabniki lahko v FileListBox izberejo več datotek, če je njegova lastnost MultiSelect True. Naslednja koda prikazuje, kako ustvariti seznam več izbir v FileListBox in ga prikazati v SimpleListBox (nekaj "navadnih" kontrolnikov ListBox).
var k: celo število; ...
z FileListBox1 narediti
če je SelCount> 0, potem
za k: = 0 do elementov. Štetje 1 storiti
če je izbran [k], potem
SimpleListBox. Predmeti. Dodaj (Postavke [k]);
Če želite prikazati celotna imena poti, ki niso skrajšana z elipso, ne dodelite imena predmeta Label lastnosti DirLabel v DirectoryListBox. Namesto tega v obrazec vstavite oznako in nastavite njeno lastnost napisov v dogodku OnChange DirectoryListBox v DirectoryListBox. Lastnost imenika.