Sådan bruges Delphi til at oprette en brugerdefineret Windows Stifinder

Windows Stifinder er det, du bruger i Windows-operativsystemet til at søge efter filer og mapper. Du kan oprette en lignende struktur med Delphi, så det samme indhold udfyldes i dit programs brugergrænseflade.

Almindelige dialogbokse bruges i Delphi til åbn og gem en fil i et program. Hvis du vil bruge tilpassede filadministratorer og dialogbøger til katalogsøgning, skal du beskæftige dig med filsystem Delphi-komponenter.

Win 3.1 VCL-paletgruppen indeholder flere komponenter, der giver dig mulighed for at opbygge din egen brugerdefinerede "File Open" eller "File Save" dialogboks: TFileListBox, TDirectoryListBox, TDriveComboBox, og TFilterComboBox.

Navigering i filer

Filsystemets komponenter giver os mulighed for at vælge et drev, se den hierarkiske katalogstruktur på en disk og se navnene på filerne i et givet bibliotek. Alle filsystemkomponenter er designet til at arbejde sammen.

For eksempel kontrollerer din kode, hvad brugeren har gjort for at sige en DriveComboBox og videresender derefter disse oplysninger til en DirectoryListBox. Ændringerne i DirectoryListBox overføres derefter til en FileListBox, hvor brugeren kan vælge den eller de nødvendige filer.

instagram viewer

Design af dialogformularen

Start en ny Delphi-ansøgning og vælg fanen Win 3.1 på Komponentpalet. Gør så følgende:

  • Placer en TFileListBox-, TDirectoryListBox-, TDriveComboBox- og TFilterComboBox-komponent på en formular, idet alle standardnavne opbevares
  • Tilføj en TEdit (kaldet "FileNameEdit") og en TLabel (kalder det "DirLabel").
  • Medtag et par etiketter med overskrifter, som "Filnavn", "Vejviser", "Liste over filtyper" og "Drev."

For at vise den aktuelt valgte sti som en streng i en billedtekst til DirLabel-komponenter, tildeles Label-navnet til DirectoryListBox's DirLabel ejendom.

Hvis du vil vise det valgte filnavn i en EditBox (FileNameEdit), skal du tildele Edit Object's Name (FileNameEdit) til FileListBox's FileEdit ejendom.

Flere kodelinjer

Når du har alle filsystemkomponenterne på formularen, skal du blot indstille DirectoryListBox. Drive-egenskab og FileListBox. Katalogegenskab, så komponenterne kan kommunikere og vise, hvad brugeren vil se.

Når brugeren for eksempel vælger et nyt drev, aktiverer Delphi DriveComboBox OnChange event handler. Få det til at se sådan ud:

 procedure TForm1.DriveComboBox1Change (Afsender: TObject);
beginDirectoryListBox1.Drive: = DriveComboBox1.Drive;
ende;

Denne kode ændrer displayet i DirectoryListBox ved at aktivere dens OnChange event Handler:

 procedure TForm1.DirectoryListBox1Change (Afsender: TObject);
beginFileListBox1.Directory: = DirectoryListBox1.Directory;
ende;

For at se, hvilken fil brugeren har valgt, skal du bruge OnDblClick begivenhed af FileListBox:

 procedure TForm1.FileListBox1DblClick (Afsender: TObject);
beginShowmessage ('Valgt:' + FileListBox1.FileName);
ende;

Husk, at Windows-konventionen er at få et dobbeltklik til at vælge filen, ikke et enkelt klik. Dette er vigtigt, når du arbejder med en FileListBox, fordi brug af en piletast til at flytte gennem en FileListBox vil kalde enhver OnClick-handler, som du har skrevet.

Filtrering af skærmen

Brug en FilterComboBox til at kontrollere den filtype, der vises i en FileListBox. Når du har indstillet FilterComboBox's FileList-egenskab til navnet på en FileListBox, skal du indstille egenskaben Filter til de filtyper, du vil vise.

Her er et eksempelfilter:

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

Tip og tip

Indstilling af DirectoryListBox. Drive-egenskab og FileListBox. Directoryejendom (i de tidligere skrevne OnChange-eventhåndterere) ved kørsel kan også udføres på designtidspunktet. Du kan udføre denne type forbindelse på designtidspunktet ved at indstille følgende egenskaber (fra Objektinspektøren):

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

Brugere kan vælge flere filer i en FileListBox, hvis dens MultiSelect-egenskab er sand. Følgende kode viser, hvordan man opretter en liste over flere valg i en FileListBox og viser den i en SimpleListBox (nogle "almindelige" ListBox-kontrol).

 var k: heltal; ...
med FileListBox1 do
hvis SelCount> 0 derefter
for k: = 0 til varer. Count-1 do
hvis valgt [k] derefter
SimpleListBox. Elementer. Tilføj (varer [k]);

For at vise fulde stienavne, der ikke er forkortet med en ellipsis, skal du ikke tildele et Label-objektnavn til DirLabel-egenskaben i en DirectoryListBox. Indsæt i stedet en etiket i en form og indstil dens billedtekstegenskab i DirectoryListBox's OnChange-begivenhed til DirectoryListBox. Directoryejendom.