Închiderea unui formular prin apăsarea tastei de evacuare în Delphi

Pentru comoditatea operatorului de programe cu mai multe ferestre, uneori este util să închideți formularul curent, apăsând tasta Escape. Extragerea standard prin apăsarea mouse-ului pe butonul de ieșire a ferestrei (o cruce în colțul din dreapta sus) poate fi într-adevăr mai puțin convenabilă decât o tastă de pe tastatură. Aceasta poate fi, de exemplu, prin completarea mai multor formulare cu tranziții la forme secundare pentru a selecta unele valori sau setări suplimentare.







Implementarea acestei funcții nu este dificilă. Creați un program nou cu un formular gol. Apoi, adăugăm codul evenimentului OnKeyPress la formularul care închide formularul (metoda de închidere). Și, înainte ca aceasta să fie o condiție care verifică dacă tasta Escape a fost apăsată. Fără această condiție, programul se va închide când apăsați orice tastă. Iată un exemplu de cod gata realizat:

procedura TMyForm.FormKeyPress (expeditor: TObject; var Key: Char);
începe
dacă Key = # 27 apoi Close;
se încheie;

Aici, Key este o variabilă care conține codul unei taste presate; Codul # 27 al caracterului Esc; Închideți - comanda pentru închiderea formularului.

Dacă rulați programul și apăsați Esc, programul se va închide, așa cum sa planificat. Cu toate acestea, mai sunt multe de parcurs. Dacă adăugați acum orice componentă în formular, focalizarea programului va fi transferată la acesta. Aceasta înseamnă că, deși nu există nimic în formular, lansarea programului, a evenimentelor de tip tastatură și mouse sunt declanșate pentru formular și programul nostru funcționează corect. Dar, dacă este activă o altă componentă (focalizare), atunci apăsarea butonului de pe tastatură va declanșa evenimentul OnKeyPress al acestei componente, nu forma.







După ce ați instalat componenta Editare în formular și rulați programul, puteți să vă asigurați că apăsarea Esc nu produce niciun rezultat. La urma urmei, nu a fost specificat nimic pentru evenimentul OnKeyPress al editorului nostru.

Desigur, puteți asocia procesarea acestui eveniment comenzii de ieșire pentru fiecare componentă. Dar această soluție nu este foarte convenabil, pentru că este prea greoaie și, cel mai important - deoarece alte componente pot avea proceduri proprii pentru acest eveniment.

Prin urmare, trebuie să vă asigurați că formularul reacționează la evenimentul OnKeyPress fără a interfera cu același eveniment în alte componente. Pentru aceasta, trebuie să configurați proprietatea formularului KeyPreview. Această proprietate logică este exact responsabilă pentru manipularea evenimentelor tastaturii. Implicit este Fals. Aceasta înseamnă că evenimentul este gestionat de componenta activă în prezent. Atribuind această proprietate la True, specificăm că, la începutul evenimentului, tastaturile vor fi executate de gestionarii evenimentului din formular și apoi de componenta activă.

pentru că În inspectorul de obiecte al acestei proprietăți, nu există nici o formă, o puteți configura programabil, pentru evenimentul de creare a formularului OnCreate. Adăugați în program următorul cod:

procedura TMyForm.FormCreate (expeditor: TObject);
începe
MyForm.KeyPreview: = Adevărat;
se încheie;

Acum, când executați programul (pentru a fi precis, atunci când creați formularul), proprietatea formei KeyPreview va fi setată la True.

După finalizarea acestui program, programul va fi închis corect făcând clic pe Escape cu toate componentele disponibile în fereastră. În plus, chiar dacă unele dintre ele vor conține procedurile pentru evenimentul OnKeyPress, acestea vor fi executate corect.

Mai multe din această secțiune







Trimiteți-le prietenilor: