Windows Explorer koristite na Windows operativnom sustavu za pretraživanje datoteka i mapa. S Delphijem možete stvoriti sličnu strukturu tako da se isti sadržaj napuni unutar korisničkog sučelja vašeg programa.
U Delphiju se koriste uobičajeni dijaloški okviri za otvorite i spremite datoteku u aplikaciji. Ako želite koristiti prilagođene upravitelje datoteka i dijaloge za pregledavanje direktorija, morate se baviti komponentama Delphi datotečnog sustava.
Grupa palete Win 3.1 VCL uključuje nekoliko komponenti koje vam omogućavaju da izradite vlastiti prilagođeni dijaloški okvir "Otvori datoteku" ili "Datoteka za spremanje": TFileListBox, TDirectoryListBox, TDriveComboBox, i TFilterComboBox.
Navigacija datotekama
Komponente datotečnog sustava omogućuju nam odabir pogona, pregled strukture hijerarhijske mape diska i nazive datoteka u datoj mapi. Sve su komponente datotečnog sustava dizajnirane za zajednički rad.
Na primjer, vaš kôd provjerava što je korisnik učinio, recimo, DriveComboBox, a zatim te informacije prosljeđuje u DirectoryListBox. Promjene u DirectoryListBox-u tada se prenose u FileListBox u kojem korisnik može odabrati potrebne datoteke.
Dizajniranje dijaloškog obrasca
Započnite novo Delphi aplikacija i odaberite karticu Win 3.1 na Paleta komponenata. Zatim napravite sljedeće:
- Postavite jedan TFileListBox, TDirectoryListBox, TDriveComboBox i TFilterComboBox komponentu na obrazac, zadržavajući sva njihova zadana imena
- Dodajte jedan TEdit (nazvan "FileNameEdit") i jedan TLabel (nazovite to "DirLabel").
- Uključite nekoliko oznaka s naslovima, poput "Naziv datoteke", "Imenik", "Popis datoteka tipa" i "Pogoni".
Da biste prikazali trenutno odabrani put kao niz u natpisu komponenti DirLabel, dodijelite ime oznake imeniku DirectoryListBox Vlasništvo DirLabel.
Ako želite prikazati odabrano ime datoteke u programu EditBox (FileNameEdit), morate dodijeliti ime objekta Uredi (FileNameEdit) naziv datoteke FileListBox Svojstvo FileEdit.
Više linija koda
Kada na obrascu imate sve komponente datotečnog sustava, jednostavno morate postaviti DirectoryListBox. Svojstvo pogona i FileListBox. Svojstvo imenika kako bi komponente komunicirale i pokazale ono što korisnik želi vidjeti.
Na primjer, kada korisnik odabere novi pogon, Delphi aktivira DriveComboBox OnChange dostavljač događaja. Neka izgleda ovako:
postupak TForm1.DriveComboBox1Change (pošiljatelj: TObject);
beginDirectoryListBox1.Drive: = DriveComboBox1.Drive;
kraj;
Ovaj kôd mijenja zaslon u DirectoryListBox aktiviranjem njenog OnChange Voditelj događaja:
postupak TForm1.DirectoryListBox1Change (pošiljatelj: TObject);
beginFileListBox1.Directory: = DirectoryListBox1.Directory;
kraj;
Da biste vidjeli koju je datoteku korisnik odabrao, morate koristiti OnDblClick događaj FileListBox:
postupak TForm1.FileListBox1DblClick (pošiljatelj: TObject);
beginShowmessage ('Izabrano:' + FileListBox1.FileName);
kraj;
Imajte na umu da je Windows konvencija dvaput kliknuti na datoteku, a ne na jedan klik. Ovo je važno kad radite s FileListBox-om, jer bi se pomoću tipke sa strelicom za pomicanje kroz FileListBox pozvao bilo koji onClick rukovatelj koji ste napisali.
Filtriranje zaslona
Upotrijebite FilterComboBox za kontrolu vrste datoteka koje se prikazuju u FileListBoxu. Nakon što ste svojstvo FileList FilterComboBox postavili na naziv FileListBox, postavite svojstvo Filter na vrste datoteka koje želite prikazati.
Evo uzorka filtra:
FilterComboBox1.Filter: = 'Sve datoteke (*. *) | *. * | Projektne datoteke (* .dpr) | * .dpr | Pascal jedinice (* .pas) | * .pas ';
Savjeti i savjeti
Postavljanje DirectoryListBoxa. Svojstvo pogona i FileListBox. Svojstvo direktorija (u prethodno napisanim OnChange događajima za obradu događaja) u vrijeme izvođenja može se obaviti u vrijeme dizajniranja. Ovu vrstu veze možete uspostaviti u vrijeme projektiranja postavljanjem sljedećih svojstava (od Object Inspector):
DriveComboBox1.DirList: = DirectoryListBox1
DirectoryListBox1.FileList: = FileListBox1
Korisnici mogu odabrati više datoteka u FileListBoxu ako je svojstvo MultiSelect True. Sljedeći kôd pokazuje kako kreirati popis s više izbora u FileListBox-u i prikazati ga u SimpleListBoxu (neka "obična" kontrola ListBoxa).
var k: cijeli broj; ...
s FileListBox1 učiniti
ako je SelCount> 0 tada
za k: = 0 točki. Broji-1 učini
ako je tada odabran [k]
SimpleListBox. Stavke. Dodaj (stavke [k]);
Da biste prikazali puna imena staza koja nisu skraćena elipsom, ne dodijelite naziv objekta Label svojstvu DirLabel u imeniku DirectoryListBox. Umjesto toga, u obrazac umetnite Oznaku i postavite svojstvo opisa u događaju OnChange DirectoryListBox u DirectoryListBox. Svojstvo imenika.