Tijdens het werken met verschillende Windows-applicaties en Delphi, we zijn gewend geraakt aan het werken met een van de standaard dialoogvensters voor het openen en opslaan van een bestand, het zoeken en vervangen van tekst, afdrukken, lettertypen kiezen of kleuren instellen.
In dit artikel zullen we enkele van de belangrijkste eigenschappen en methoden van die dialoogvensters onderzoeken met een speciale focus op Open en Opslaan dialoogvensters.
De algemene dialoogvensters zijn te vinden op het tabblad Dialogen van het Component-palet. Deze componenten maken gebruik van de standaard Windows-dialoogvensters (in een DLL in uw \ Windows \ System-map). Om een gemeenschappelijk dialoogvenster te gebruiken, moeten we de juiste component (componenten) op het formulier plaatsen. De algemene onderdelen van het dialoogvenster zijn niet-visueel (hebben geen visuele ontwerp-tijdinterface) en zijn daarom tijdens runtime onzichtbaar voor de gebruiker.
TOpenDialog en TSaveDialog
De dialoogvensters Bestand openen en Bestand opslaan hebben verschillende gemeenschappelijke eigenschappen. Bestand openen wordt meestal gebruikt voor het selecteren en openen van bestanden. Het dialoogvenster Bestand opslaan (ook gebruikt als het dialoogvenster Opslaan als) wordt gebruikt bij het ophalen van een bestandsnaam van de gebruiker om een bestand op te slaan. Enkele belangrijke eigenschappen van de TOpenDialog en TSaveDialog zijn:
- De Opties eigenschappen zijn erg belangrijk bij het bepalen van het uiteindelijke uiterlijk van de doos. Bijvoorbeeld een coderegel zoals:
met OpenDialog1 DoenOpties: = Opties + [ofAllowMultiSelect, ofFileMustExist];
houdt opties al ingesteld en staat gebruikers toe om meer dan één bestand in het dialoogvenster te selecteren, samen met het genereren van een foutmelding als de gebruiker probeert een niet-bestaand bestand te selecteren. - De InitialDir eigenschap wordt gebruikt om de map op te geven die zal worden gebruikt als de oorspronkelijke map wanneer het bestandsdialoogvenster wordt weergegeven. De volgende code zorgt ervoor dat de eerste map van het dialoogvenster Openen de opstartmap van de toepassing is.
SaveDialog1.InitialDir: = ExtractFilePath (Toepassing. ExeName);
- De Filter eigenschap bevat een lijst met bestandstypen waaruit de gebruiker kan kiezen. Wanneer de gebruiker een bestandstype uit de lijst kiest, worden alleen bestanden van het geselecteerde type in het dialoogvenster weergegeven. Het filter kan tijdens het ontwerp eenvoudig worden ingesteld via het dialoogvenster Filtereditor.
- Als u bestandsmaskers in programmacode wilt maken, wijst u een waarde toe aan de eigenschap Filter die bestaat uit een beschrijving en een masker gescheiden door een verticale balk (pijp). Soortgelijk:
OpenDialog1.Filter: = 'Tekstbestanden (* .txt) | * .txt | Alle bestanden (*. *) | *. * ';
- De Bestandsnaam eigendom. Nadat de gebruiker in een dialoogvenster op de knop OK heeft geklikt, bevat deze eigenschap het volledige pad en de bestandsnaam van het gekozen bestand.
Uitvoeren
Om daadwerkelijk een gemeenschappelijk dialoogvenster te maken en weer te geven, moeten we de Uitvoeren methode van het specifieke dialoogvenster tijdens runtime. Behalve TFindDialog en TReplaceDialog worden alle dialoogvensters modaal weergegeven.
Met alle gebruikelijke dialoogvensters kunnen we bepalen of de gebruiker op de knop Annuleren klikt (of op ESC drukt). Omdat de Execute-methode True retourneert als de gebruiker op de knop OK heeft geklikt, moeten we een klik op een knop Annuleren vastzetten om te controleren of de opgegeven code niet wordt uitgevoerd.
als OpenDialog1. Uitvoeren vervolgens ShowMessage (OpenDialog1.FileName);
Deze code geeft het dialoogvenster Bestand openen weer en geeft een geselecteerde bestandsnaam weer na een "succesvolle" oproep om de methode uit te voeren (wanneer de gebruiker op Openen klikt).
Opmerking: uitvoeren retourneert True als de gebruiker op de knop OK heeft geklikt, op een bestandsnaam heeft geklikt (in het geval van de bestandsdialogen) of op Enter op het toetsenbord heeft gedrukt. Uitvoeren retourneert Onwaar als de gebruiker op de knop Annuleren heeft geklikt, op de Esc-toets heeft gedrukt, het dialoogvenster heeft gesloten met de knop Systeem sluiten of met de Alt-F4-toetscombinatie.
Van code
Om tijdens de uitvoering met het dialoogvenster Openen (of een ander) te werken zonder een OpenDialog-component op het formulier te plaatsen, kunnen we de volgende code gebruiken:
procedure TForm1.btnFromCodeClick (Sender: TObject); var OpenDlg: TOpenDialog; beginnen OpenDlg: = TOpenDialog. Maken (zelf); {stel hier opties in ...}als OpenDlg. Uitvoeren vervolgensbeginnen {code om hier iets te doen} einde; OpenDlg. Vrij; einde;
Opmerking: Voordat we Execute aanroepen, kunnen (moeten) we alle eigenschappen van de OpenDialog-component instellen.
MyNotepad
Eindelijk is het tijd om echt te coderen. Het hele idee achter dit artikel (en enkele andere die nog komen) is om een eenvoudige MyNotepad-applicatie te maken - zelfstandige Windows-app zoals Kladblok.
In dit artikel worden de dialoogvensters Openen en Opslaan gepresenteerd, dus laten we ze in actie zien.
Stappen om de gebruikersinterface van MyNotepad te maken:
. Start Delphi en selecteer Bestand-nieuwe applicatie.
. Plaats één Memo, OpenDialog, SaveDialog twee knoppen op een formulier.
. Wijzig de naam van Button1 in btnOpen, Button2 in btnSave.
Codering
1. Gebruik Object Inspector om de volgende code toe te wijzen aan de FormCreate-gebeurtenis:
procedure TForm1.FormCreate (Sender: TObject); beginnenmet OpenDialog1 Doenbeginnen Opties: = Opties + [ofPathMustExist, ofFileMustExist]; InitialDir: = ExtractFilePath (toepassing. ExeName); Filter: = 'Tekstbestanden (* .txt) | * .txt'; einde; met SaveDialog 1 Doenbeginnen InitialDir: = ExtractFilePath (toepassing. ExeName); Filter: = 'Tekstbestanden (* .txt) | * .txt'; einde; Memo1.ScrollBars: = ssBoth; einde;
Deze code stelt enkele eigenschappen van het dialoogvenster Openen in, zoals besproken aan het begin van het artikel.
2. Voeg deze code toe voor de Onclick-gebeurtenis van btnOpen en btnSave-knoppen:
procedure TForm1.btnOpenClick (Afzender: TObject); beginnenals OpenDialog1. Uitvoeren vervolgensbeginnen Form1.Caption: = OpenDialog1.FileName; Memo 1. lijnen. LoadFromFile. (OpenDialog1.FileName); Memo1.SelStart: = 0; einde; einde;
procedure TForm1.btnSaveClick (Afzender: TObject); beginnen SaveDialog1.FileName: = Form1.Caption; als SaveDialog1. Uitvoeren vervolgensbeginnen Memo 1. lijnen. SaveToFile. (SaveDialog1.FileName + '.txt'); Form1.Caption: = SaveDialog1.FileName; einde; einde;
Voer uw project uit. Je kunt het niet geloven; bestanden worden geopend en opgeslagen, net als bij het "echte" Kladblok.
Laatste woorden
Dat is het. We hebben nu ons eigen "kleine" notitieblok.