Mens du arbeider med forskjellige Windows-applikasjoner og Delphi, har vi blitt vant til å bruke en av standardene dialogbokser for å åpne og lagre en fil, finne og erstatte tekst, skrive ut, velge skrifter eller stille inn farger.
I denne artikkelen skal vi undersøke noen av de viktigste egenskapene og metodene i dialogene med et spesielt fokus Åpen og Lagre dialogbokser.
De vanlige dialogboksene finner du på Dialogbok-fanen i komponentpaletten. Disse komponentene drar fordel av standard Windows-dialogbokser (ligger i en DLL i \ Windows \ System-katalogen). For å bruke en felles dialogboks, må vi plassere den aktuelle komponenten (komponenter) på skjemaet. De vanlige dialogbokskomponentene er ikke-visuelle (har ikke et visuelt grensesnitt for designtid) og er derfor usynlige for brukeren ved kjøretid.
TOpenDialog og TSaveDialog
Dialogboksen File Open og File Save har flere vanlige egenskaper. File Open brukes vanligvis til å velge og åpne filer. File Save-dialogboksen (også brukt som Save As-dialogboksen) brukes når du får et filnavn fra brukeren for å lagre en fil. Noen av de viktige egenskapene til TOpenDialog og TSaveDialog er:
- De alternativer egenskaper er veldig viktige for å bestemme den endelige utseendet og følelsen av boksen. For eksempel en kodelinje som:
med OpenDialog1 gjøreAlternativer: = Valg + [avAllowMultiSelect, ofFileMustExist];
vil beholde alternativene som allerede er angitt, og lar brukere velge mer enn en fil i dialogboksen sammen med å generere en feilmelding hvis brukeren prøver å velge en ikke-eksisterende fil. - De InitialDir egenskapen brukes til å spesifisere katalogen som skal brukes som den første katalogen når dialogboksen for filen vises. Følgende kode vil sikre at den opprinnelige katalogen til Åpne dialogboksen er oppstartskatalogen for applikasjoner.
SaveDialog1.InitialDir: = ExtractFilePath (applikasjon. ExeName);
- De Filter Egenskapen inneholder en liste over filtypene som brukeren kan velge fra. Når brukeren plukker en filtype fra listen, vises bare filer av den valgte typen i dialogboksen. Filteret kan enkelt stilles inn på designtidspunktet gjennom dialogboksen Filterredigerer.
- For å lage filmasker i programkode, tilordne en verdi til egenskapen Filter som består av en beskrivelse og en maske atskilt med et loddrett bjelke (rør) tegn. Som dette:
OpenDialog1.Filter: = 'Tekstfiler (* .txt) | * .txt | Alle filer (*. *) | *. * ';
- De Filnavn eiendom. Når brukeren klikker OK-knappen i en dialogboks, vil denne egenskapen inneholde hele banen og filnavnet til den valgte filen.
Henrette
For å faktisk opprette og vise felles dialogboks må vi behandle Henrette metode for den spesifikke dialogboksen under kjøretid. Bortsett fra TFindDialog og TReplaceDialog, vises alle dialogbokser modalt.
Alle de vanlige dialogboksene lar oss bestemme om brukeren klikker på Avbryt-knappen (eller trykker på ESC). Siden kjøremetoden returnerer sann hvis brukeren klikket på OK-knappen, må vi felle et klikk på en avbryt-knapp for å sikre at den gitte koden ikke blir utført.
hvis OpenDialog1.Execute deretter ShowMessage (OpenDialog1.FileName);
Denne koden viser dialogboksen File Open og viser et valgt filnavn etter en "vellykket" samtale for å utføre metoden (når brukeren klikker på Open).
Merk: Utfør returnerer sant hvis brukeren klikket på OK-knappen, dobbeltklikket på et filnavn (for fildialogene) eller trykket Enter på tastaturet. Utfør returnerer usant hvis brukeren klikket på Avbryt-knappen, trykket på Esc-tasten, lukket dialogboksen med systemstengeknappen eller med Alt-F4-tastekombinasjonen.
Fra kode
For å jobbe med Åpen dialog (eller noen annen) under kjøring uten å plassere en OpenDialog-komponent på skjemaet, kan vi bruke følgende kode:
fremgangsmåte TForm1.btnFromCodeClick (avsender: TObject); Var OpenDlg: TOpenDialog; begynne OpenDlg: = TOpenDialog. Opprette (Selv); {angi alternativer her ...}hvis OpenDlg. Henrette deretterbegynne {kode for å gjøre noe her} slutt; OpenDlg. Gratis; slutt;
Merk: Før vi ringer Execute, kan vi (måtte) stille inn noen av OpenDialog-komponentens egenskaper.
MyNotepad
Endelig er det på tide å gjøre ekte koding. Hele ideen bak denne artikkelen (og få andre som skal komme) er å lage et enkelt MyNotepad-program - frittstående Windows som Notepad-applikasjon.
I denne artikkelen blir vi presentert med åpne og lagre dialogbokser, så la oss se dem i aksjon.
Trinn for å opprette MyNotepads brukergrensesnitt:
. Start Delphi og velg File-New Application.
. Plasser ett memo, OpenDialog, SaveDialog to knapper på et skjema.
. Gi nytt navn til knapp1 til btnÅpne, knapp2 til btnSave.
Coding
1. Bruk Object Inspector til å tilordne følgende kode til FormCreate-hendelsen:
fremgangsmåte TForm1.FormCreate (avsender: TObject); begynnemed OpenDialog1 gjørebegynne Alternativer: = Valg + [avPathMustExist, ofFileMustExist]; InitialDir: = ExtractFilePath (applikasjon. ExeName); Filter: = 'Tekstfiler (* .txt) | * .txt'; slutt; med SaveDialog1 gjørebegynne InitialDir: = ExtractFilePath (applikasjon. ExeName); Filter: = 'Tekstfiler (* .txt) | * .txt'; slutt; Memo1.ScrollBars: = ssBoth; slutt;
Denne koden setter noen av Open dialogegenskaper som diskutert i begynnelsen av artikkelen.
2. Legg til denne koden for Onclick-hendelsen til btnOpen og btnSave-knappene:
fremgangsmåte TForm1.btnOpenClick (avsender: TObject); begynnehvis OpenDialog1.Execute deretterbegynne Form1.Caption: = OpenDialog1.FileName; Memo1.Lines. LoadFromFile. (OpenDialog1.FileName); Memo1.SelStart: = 0; slutt; slutt;
fremgangsmåte TForm1.btnSaveClick (avsender: TObject); begynne SaveDialog1.FileName: = Form1.Caption; hvis SaveDialog1.Execute deretterbegynne Memo1.Lines. SaveToFile. (SaveDialog1.FileName + '.txt'); Form1.Caption: = SaveDialog1.FileName; slutt; slutt;
Kjør prosjektet ditt. Du kan ikke tro det; filer åpnes og lagres akkurat som med den "ekte" Notisblokken.
Avsluttende ord
Det er det. Vi har nå vår egen "lille" Notisblokk.