Listing 9.1. Codul sursă al proiectului:
MainUnit în 'MainUnit.pas1; începe
Application.Initialize; Application.CreateForm (TFormi, Forml); Application.Run; end.
Toate acestea nu sunt altceva decât conținutul fișierului SplashProject.dpr. Prima linie este numele programului SplashProject. În această linie, nimic nu poate fi schimbat, deoarece numele fișierului trebuie să se potrivească cu numele programului scris aici. Apoi, există deja o secțiune familiară utilizată, în care puteți conecta modulele necesare. Avem module Formulare (permite lucrul cu formulare) și MainUnit (modulul ferestrei principale). Dacă există mai multe ferestre în program, atunci toate acestea sunt înregistrate automat aici în secțiunea utilizări, deoarece acest fișier descrie inițializarea ferestrelor și ar trebui să știe despre existența tuturor ferestrelor din program. Dacă o fereastră nu este inițializată automat, atunci numai în acest caz puteți șterge modulul din această fereastră din conexiunea utilizărilor, altfel o eroare va apărea în timpul compilării.
Există trei linii între început și sfârșit.
Application.initialize - pornește inițializarea aplicației. Nu se recomandă curățarea.
Application.CreateForm (TForm1, Form1) - metoda CreateForm inițializează formularul. Are doi parametri - numele obiectului și numele variabilei, care va indica mai târziu obiectul creat. În cazul nostru, acesta este numele formularului TForm1 și numele variabilei Form1. Variabila Form1 este descrisă automat în modulul obiectului TForm1 (în cazul nostru este un modul
MainUnit .pas) in var:
Application.Run - după inițializarea tuturor formularelor, puteți executa execuția programului WITH HELP a metodei Run a obiectului Application.
Un obiect Application este folosit peste tot. Acest obiect există întotdeauna în programele dvs. într-o singură instanță și este creat utilizând linia Application.initialize. Cu acest obiect vom cunoaște treptat toată cartea, iar acum este suficient să știm că provine din clasa de învățământ și implementează funcțiile de bază ale managementului aplicațiilor.
Acum creați o nouă formă selectând File | Nou | Forma. și salvați-l ca spiashunit.pas. Uitați-vă din nou la codul sursă al proiectului, ar trebui să fie așa cum se arată în Lista 9.2.
programul SplashProject; utilizări
MainUnit în 'MainUnit.pas', SplashUnit în 'SplashUnit.pas 1;
Application.Initialize; Application.CreateForm (TForml, Forml); Application.CreateForm (TForm2, Form2); Application.Run; end.
Acum introduceți proprietățile proiectului (din meniul Project, selectați Option). În fila Formulare, două forme sunt descrise în lista Formulare automată. Selectați Form2 (acest al doilea formular pe care tocmai l-am creat) și mutați-l în lista Forms available. Închideți fereastra de proprietăți cu ajutorul butonului OK și examinați codul sursă al proiectului. Este posibil să observați că șirul de inițializare al celui de-al doilea formular a dispărut. Acest lucru se datorează faptului că l-am mutat din lista formelor create automat în lista formelor disponibile. Adică forma noastră este disponibilă în proiect, dar nu este creată automat când începe programul. Deci, pentru a folosi Form2, trebuie mai întâi să o creăm.
Pentru a promova mai ușor la locul de muncă, redenumiți forma principală în MainForm Forml, iar al doilea în formă Form2 spiashForm. Deci, nu vom fi confuz, în cazul în care forma principală, și în cazul în care formularul-economizor. Instalați butonul pe formularul principal și scrieți următorul cod dând clic pe el:
procedura TMainForm.ButtonlClick (expeditor: TObj ect); începe
Aici, în prima linie de cod, inițializăm formularul SplashForm. În a doua fereastră se afișează fereastra creată. Și în ultima linie, Fereastra este distrusă de metoda liberă.
Dar există încă o modalitate de a crea ferestre, pe care le-am folosit deja, și este de preferat. Scrieți următorul cod:
procedura TMainForm.ButtonlClick (expeditor: TObject);
SplashForm: = TSplashForm. Creați (Proprietar);
Aici, variabila SplashForm este atribuită rezultatului chemării metodei de creare a obiectului TSpiashForm. Această metodă trebuie să transfere un singur parametru - proprietarul ferestrei. Dacă proprietarul nu, atunci puteți trece zero (zero înseamnă că proprietarul nu există). În cazul nostru, proprietatea proprietarului este trecută, în care se stochează indicatorul la fereastra curentă. Dacă fereastra principală nu ar trebui să fie fereastra curentă, trebuie să specificați numele obiectului - Form1.owner.
Să facem să apară fereastra noastră SplashForm în momentul încărcării programului. Ferestre similare pe care le vedeți când porniți programe cum ar fi Delphj. Cuvânt. Excel și alte aplicații. Pentru aceasta, mergeți la codul sursă al proiectului și corectați-l astfel încât să corespundă codului din listele 9.3.
Aplicație. CreateForm (TMainForm, MainForm);
Luați în considerare acest cod de linie.
- Fereastra spiashForm este creată. Această fereastră nu va avea un proprietar, deoarece este afișată chiar înainte de crearea ferestrei principale. Prin urmare, ca parametru al metodei de creare, specificăm valoarea nul.
- Nu afișăm fereastra pe ecran modal, astfel încât fereastra să fie afișată, iar aplicația continuă să funcționeze.
- Redeschideți fereastra apelând metoda Repaint.
- Inițializarea aplicației.
- Forma principală a TMainForm este creată.
- Facem o întârziere, astfel încât fereastra SpiashForm ar putea cel puțin să "stea" pe ecran. Pentru aceasta folosim rutina de somn, iar parametrul specifică timpul de întârziere în milisecunde. O secundă este de 1000 milisecunde. Pentru a utiliza această funcție în secțiunea utilizări, trebuie să adăugați un modul
- Windows.
- Ascundeți formularul SpiashForm sunând la metoda Hide.
- Distrugem fereastra.
- Rulați aplicația.
Rulați programul și veți vedea mai întâi fereastra SpiashForm (textul TLabel cu "Încărcare" este plasat pe el), apoi va apărea fereastra principală.
TIP. Când se creează ferestre (numite CreateForm), programul execută procesele de procesare a evenimentului pe toate formele generate. Dacă aplicația dvs. este prea mare și operațiile din acești manipulatori sunt efectuate o perioadă lungă de timp, este de dorit să afișați informații despre progresul acestor operațiuni în fereastra SpiashForm. În acest caz, primul lucru de făcut este să creați această fereastră și să fie afișată pe ecran. Utilizatorul vede că există o descărcare și o așteaptă să termine.
Atunci când formularul este inițializat, constructorul său este numit în acest moment. Dacă aveți 20 de formulare în proiect și designerul fiecăruia efectuează anumite operațiuni pe termen lung, acesta creează sentimentul că programul este înghețat. Este necesar să optimizați codul pentru a crește viteza încărcării programului sau să informați utilizatorul că programul nu este suspendat, dar se încarcă.
Dacă nu informați despre progresul descărcării și nimic nu apare pe ecran, utilizatorul poate crede că programul a fost închis și încercați să îl porniți din nou. Aceasta, la rândul său, poate duce la prăbușirea întregului proces de calcul. De exemplu, încercarea de a executa de două ori un program care funcționează cu portul COM. În acest caz, a doua copie nu mai poate deschide portul (portul COM poate fi deschis numai o singură dată). Prin urmare, este mai bine să creați o fereastră din nou afișând progresul descărcării, decât să ascultați nemulțumirea utilizatorilor cu privire la activitatea programului dvs.
Cum pot crește viteza de descărcare? Imediat se propun următoarele opțiuni.
Inițializați numai formele de bază. O idee foarte bună. Nu este nevoie să inițializați 150 de formulare, când nu vor mai fi utilizate mai mult de 10 dintre acestea, iar restul dacă și cum va fi chemat, este foarte rar. Aceasta este o pierdere inutilă a timpului de încărcare și a cheltuielilor de memorie în timpul funcționării. Permiteți să creați automat numai formele necesare. Efectuați toate operațiile în modulul handler de evenimente Onshow. Decizia logică, la urma urmei, când formularul este inițializat, se numește designerul său și manipulatorul de evenimente oncreate, ceea ce înseamnă că dacă aceste metode sunt executate rapid, încărcarea programului va fi accelerată. Dar dacă mutați codul la dispozitivul de afișare a evenimentului, atunci vor apărea întârzieri la afișarea ferestrei și la fiecare afișaj. Puteți crea și verifica în Onshow, dacă inițializarea a fost deja, atunci săriți acest cod și afișați doar fereastra.
A doua variantă nu este rău, dar nu uitați că MDI-ferestrele sunt vizibile imediat, astfel încât în cazul în care AutoCreate listă, apoi la timp de boot pentru programul de astfel de ferestre este numit ca un constructor, și fereastra de afișare, de ex., E., și un handler OnShow.
Formstyle pe fsMDichild, atunci proprietatea vizibilă devine automat și adevărată.
Luați în considerare această nuanță. Dacă ați făcut accidental fereastra copil și apoi ați revenit la fsNormai, atunci după pornire această fereastră va fi afișată imediat pe ecran (dacă formularul este creat automat în listă), deoarece proprietatea vizibilă rămâne egală cu adevărul.