Hvordan bruke Delphi til å lage en tilpasset Windows Utforsker

Windows Utforsker er det du bruker i Windows-operativsystemet for å søke etter filer og mapper. Du kan opprette en lignende struktur med Delphi slik at det samme innholdet fylles i programmets brukergrensesnitt.

Vanlige dialogbokser brukes i Delphi til åpne og lagre en fil i et program. Hvis du vil bruke tilpassede filbehandlere og katalogsøkingsdialogbokser, må du forholde deg til filsystem Delphi-komponenter.

Win 3.1 VCL-palettgruppen inneholder flere komponenter som lar deg bygge din egen tilpassede "File Open" eller "File Save" -dialogboksen: TFileListBox, TDirectoryListBox, TDriveComboBox, og TFilterComboBox.

Navigere i filer

Filsystemets komponenter lar oss velge en stasjon, se den hierarkiske katalogstrukturen til en disk og se navnene på filene i en gitt katalog. Alle filsystemkomponenter er designet for å fungere sammen.

For eksempel sjekker koden din hva brukeren har gjort mot, for eksempel, en DriveComboBox og deretter overfører denne informasjonen til en DirectoryListBox. Endringene i DirectoryListBox blir deretter sendt til en FileListBox der brukeren kan velge den eller de filene som er nødvendig.

instagram viewer

Designe Dialog Form

Starte på nytt Delphi-søknad og velg kategorien Win 3.1 i Komponentpalett. Gjør deretter følgende:

  • Plasser en TFileListBox-, TDirectoryListBox-, TDriveComboBox- og TFilterComboBox-komponent på et skjema, og hold alle standardnavnene deres
  • Legg til en TEdit (kalt "FileNameEdit") og en TLabel (kall det "DirLabel").
  • Ta med noen få etiketter med billedtekst, for eksempel "Filnavn", "Katalog", "Liste over filer med type" og "Disker."

For å vise den for øyeblikket valgte banen som en streng i en tekstbilde av DirLabel-komponenter, tilordner du etikettens navn til DirectoryListBox DirLabel-eiendom.

Hvis du vil vise det valgte filnavnet i en EditBox (FileNameEdit), må du tilordne Edit Object's Name (FileNameEdit) til FileListBox's FileEdit-egenskapen.

Flere linjer med kode

Når du har alle filsystemkomponentene på skjemaet, må du bare angi DirectoryListBox. Drive eiendom og FileListBox. Katalogeiendom for at komponentene skal kommunisere og vise hva brukeren vil se.

Når brukeren for eksempel velger en ny stasjon, aktiverer Delphi DriveComboBox OnChange arrangementshåndterer. Få det til å se slik ut:

 prosedyre TForm1.DriveComboBox1Change (avsender: TObject);
beginDirectoryListBox1.Drive: = DriveComboBox1.Drive;
slutt;

Denne koden endrer displayet i DirectoryListBox ved å aktivere dens OnChange hendelseshåndterer:

 prosedyre TForm1.DirectoryListBox1Change (avsender: TObject);
beginFileListBox1.Directory: = DirectoryListBox1.Directory;
slutt;

For å se hvilken fil brukeren har valgt, må du bruke OnDblClick hendelse av FileListBox:

 prosedyre TForm1.FileListBox1DblKlikk (avsender: TObject);
beginShowmessage ('Valgt:' + FileListBox1.FileName);
slutt;

Husk at Windows-konvensjonen er å la et dobbeltklikk velge filen, ikke et enkelt klikk. Dette er viktig når du jobber med en FileListBox, fordi du bruker en piltast for å gå gjennom en FileListBox og vil kalle enhver OnClick-behandler som du har skrevet.

Filtrering av skjermen

Bruk en FilterComboBox til å kontrollere filtypen som vises i en FileListBox. Etter å ha satt FilterComboBox FileList-egenskapen til navnet på en FileListBox, angir du egenskapen Filter til filtypene du vil vise.

Her er et eksempelfilter:

 FilterComboBox1.Filter: = 'Alle filer (*. *) | *. * | Prosjektfiler (* .dpr) | * .dpr | Pascal-enheter (* .pas) | * .pas ';

Hint og Tips

Innstilling av DirectoryListBox. Drive eiendom og FileListBox. Katalogeiendom (i de tidligere skrevne OnChange-hendelsesbehandlerne) ved kjøretid kan også gjøres på designtidspunktet. Du kan oppnå denne typen tilkoblinger på designtid ved å stille inn følgende egenskaper (fra Objektinspektøren):

DriveComboBox1.DirList: = DirectoryListBox1
DirectoryListBox1.FileList: = FileListBox1

Brukere kan velge flere filer i en FileListBox hvis MultiSelect-egenskapen er sann. Følgende kode viser hvordan du oppretter en liste over flere valg i en FileListBox og viser den i en SimpleListBox (noen "vanlig" ListBox-kontroll).

 var k: heltall; ...
med FileListBox1 do
hvis SelCount> 0 da
for k: = 0 til varer. Count-1 do
hvis valgt [k] da
SimpleListBox. Elementer. Legg til (Elementer [k]);

For å vise hele banenavn som ikke er forkortet med en ellipsis, ikke tilordne et Label-objektnavn til DirLabel-egenskapen til en DirectoryListBox. Sett i stedet en etikett i et skjema og sett bildetekstegenskapen sin i DirectoryListBox OnChange-hendelse til DirectoryListBox. Katalogeiendom.

instagram story viewer