Crearea unui bloc de note Delphi: deschideți și salvați

În timp ce lucrați cu diverse aplicații Windows și Delphi, ne-am obișnuit să funcționăm cu unul dintre standarde casete de dialog pentru deschiderea și salvarea unui fișier, găsirea și înlocuirea textului, tipărirea, alegerea fonturilor sau setarea culorilor.

În acest articol, vom examina unele dintre cele mai importante proprietăți și metode ale dialogurilor cu un accent special pe Deschis și salva casete de dialog.

Casetele de dialog comune se găsesc în fila Dialogs din paleta Component. Aceste componente profită de casetele de dialog standard Windows (localizate într-un DLL din directorul dvs. \ Windows \ System). Pentru a utiliza o casetă de dialog comună, trebuie să plasăm componenta (componentele) corespunzătoare pe formular. Componentele obișnuite ale casetei de dialog sunt non-vizuale (nu au o interfață vizuală-proiectare-timp) și, prin urmare, sunt invizibile pentru utilizator în timpul rulării.

TOpenDialog și TSaveDialog

Casetele de dialog File Open și File File Save au mai multe proprietăți comune. File Open este de obicei utilizat pentru selectarea și deschiderea fișierelor. Caseta de dialog File File (folosită și ca caseta de dialog Save As) este utilizată la obținerea unui nume de fișier de la utilizator pentru a salva un fișier. Unele dintre proprietățile importante ale TOpenDialog și TSaveDialog sunt:

instagram viewer

  • Opțiuni proprietățile sunt foarte importante pentru a determina aspectul final și aspectul cutiei. De exemplu, o linie de cod precum:
    cu OpenDialog1 doOpțiuni: = Opțiuni + [ofAllowMultiSelect, ofFileMustExist];
    va menține opțiunile deja setate și le va permite utilizatorilor să selecteze mai multe fișiere în dialog împreună cu generarea unui mesaj de eroare dacă utilizatorul încearcă să selecteze un fișier inexistent.
  • InitialDir proprietatea este utilizată pentru a specifica directorul care va fi utilizat ca director inițial atunci când este afișată caseta de dialog fișier. Următorul cod vă va asigura că directorul inițial al casetei de dialog Deschis este directorul de pornire a aplicațiilor.
    SaveDialog1.InitialDir: = ExtractFilePath (aplicație). ExeName);
  • Filtru proprietate conține o listă de tipuri de fișiere din care utilizatorul poate alege. Când utilizatorul alege un tip de fișier din listă, în fereastra de dialog sunt afișate numai fișierele de tipul selectat. Filtrul poate fi setat cu ușurință la timpul de proiectare prin caseta de dialog Editor de filtre.
  • Pentru a crea măști de fișiere în codul programului, alocați o valoare proprietății Filter care constă dintr-o descriere și o mască separată de un caracter vertical de bare (pipe). Asa:
    OpenDialog1.Filter: = 'Fișiere text (* .txt) | * .txt | Toate fișierele (*. *) | *. * ';
  • Nume de fișier proprietate. Odată ce utilizatorul face clic pe butonul OK dintr-o casetă de dialog, această proprietate va conține calea completă și numele de fișier al fișierului ales.

A executa

Pentru a crea și afișa caseta de dialog comună, trebuie să procesăm A executa metoda casetei de dialog specifice la runtime. Cu excepția TFindDialog și TReplaceDialog, toate casetele de dialog sunt afișate modal.

Toate casetele de dialog comune ne permit să stabilim dacă utilizatorul face clic pe butonul Anulare (sau apasă ESC). Deoarece metoda Execute returnează True dacă utilizatorul a făcut clic pe butonul OK, trebuie să surprindem un clic pe butonul Cancel pentru a ne asigura că codul dat nu este executat.

dacă OpenDialog1.Execute apoi
ShowMessage (OpenDialog1.FileName);

Acest cod afișează caseta de dialog File Open și afișează un nume de fișier selectat după un apel „de succes” la executarea metodei (atunci când utilizatorul face clic pe Deschide).

Notă: Execute returnează True dacă utilizatorul a făcut clic pe butonul OK, a dat dublu clic pe un nume de fișier (în cazul dialogurilor de fișiere) sau dacă a apăsat Enter pe tastatură. Execute returnează False dacă utilizatorul a făcut clic pe butonul Cancel, a apăsat tasta Esc, a închis caseta de dialog cu butonul de închidere a sistemului sau cu combinația de taste Alt-F4.

Din Cod

Pentru a lucra cu dialogul Open (sau cu oricare altul) în timpul rulării, fără a plasa o componentă OpenDialog pe formular, putem folosi următorul cod:

procedură TForm1.btnFromCodeClick (Expeditor: TObject); var OpenDlg: TOpenDialog; începe OpenDlg: = TOpenDialog. Creați (Sinele); {setează opțiuni aici ...}dacă OpenDlg. A executa apoiîncepe
{cod pentru a face ceva aici}
Sfârșit; OpenDlg. Liber; Sfârșit;

Notă: Înainte de a apela Execute, putem (trebuie să) să setăm oricare dintre proprietățile componentei OpenDialog.

MyNotepad

În cele din urmă, este timpul să faci niște codări reale. Întreaga idee din spatele acestui articol (și alți puțini care urmează) este de a crea o aplicație MyNotepad simplă - Windows independent ca aplicația Notepad.
În acest articol ni se prezintă casetele de dialog Deschide și Salvează, deci să le vedem în acțiune.

Pași pentru crearea interfeței de utilizator a MyNotepad:
. Începeți Delphi și selectați aplicația File-New.
. Plasați un memo, OpenDialog, SaveDialog pe două butoane pe un formular.
. Redenumiți Button1 în btnOpen, Button2 în btnSave.

Codificare

1. Utilizați Object Inspector pentru a atribui următorul cod la evenimentul FormCreate:

procedură TForm1.FormCreate (Expeditor: TObject); începecu OpenDialog1 doîncepe
Opțiuni: = Opțiuni + [ofPathMustExist, ofFileMustExist]; InitialDir: = ExtractFilePath (aplicație). ExeName); Filtrare: = 'Fișiere text (* .txt) | * .txt'; Sfârșit; cu SaveDialog1 doîncepe
InitialDir: = ExtractFilePath (aplicație). ExeName); Filtrare: = 'Fișiere text (* .txt) | * .txt'; Sfârșit; Memo1.ScrollBars: = ssBoth; Sfârșit;

Acest cod stabilește unele dintre proprietățile de dialog Deschis, așa cum este discutat la începutul articolului.

2. Adăugați acest cod pentru evenimentul Onclick al butoanelor btnOpen și btnSave:

procedură TForm1.btnOpenClick (Expeditor: TObject); începedacă OpenDialog1.Execute apoiîncepe
Form1.Caption: = OpenDialog1.FileName; Memo1.Lines. LoadFromFile. (OpenDialog1.FileName); Memo1.SelStart: = 0; Sfârșit; Sfârșit;
procedură TForm1.btnSaveClick (Expeditor: TObject); începe
SaveDialog1.FileName: = Form1.Caption; dacă SaveDialog1.Execute apoiîncepe
Memo1.Lines. SaveToFile. (SaveDialog1.FileName + '.txt'); Form1.Caption: = SaveDialog1.FileName; Sfârșit; Sfârșit;

Execută proiectul. Nu-ți vine să crezi; fișierele se deschid și se salvează la fel ca în blocul „real”.

Cuvinte finale

Asta e. Avem acum propriul nostru „mic” bloc de notițe.