Pe formele - Delphi
Este cunoscut faptul că în aplicațiile scrise în Delphi, în cazul în care cele două tipuri de forme - create automat (formular AutoCreate) și creat de mână. În mod implicit, în cazul în care, desigur, n-ai urca în setările pentru a crea o formă de primul tip. Ia în considerare avantajele forme ale primului și al doilea tip. Exemplu de utilizare, consultați arhiva atașată în directorul de proiect.
Pentru a forma acest tip de Delphi introduce tipul liniei fișierului proiectului: Această metodă de a crea un formular, plus un cod mic, care verifică dacă această formă de primar (caz în care se afișează) sau nu.
Astfel de forme sunt convenabile, deoarece, la momentul începerii programului sunt create toate formele date și pot ocupa în condiții de siguranță. Pentru începători, este destul de convenabil. Dar! Pentru aceasta comoditate ascunde multe capcane.
În primul rând, ar trebui să fie creat aceste forme. Și, uneori, durează foarte mult timp - de fapt designeri trebuie să lucreze pentru fiecare formă. Și aici, multe dintre „umplutura“ și conectarea la baza de date, și de căutare pentru fișierele de pe disc.
Atunci când sute de formulare începe să irite - programul se deschide cu o întârziere de lungă (uneori, contul merge pe un minut). O formă principală este afișată numai atunci când sunt create toate formele. Și începe cu codul de port pentru a OnShow (Acest eveniment are loc atunci când un formular este afișat pe ecran), ci pentru că forma poate să dispară și să apară din nou, atunci variabilele sunt introduse steaguri suplimentare. Codul global staot neaccesibele. Iar proiectul „curbe“.
În al doilea rând, nu se bazează pe această formă va fi creat în ordinea dorită. nu există nici o garanție în acest sens. În plus, în oricare dintre formele OnCreate nu poate spera că orice altă formă a fost creat. Acest lucru este deosebit de bine văzut atunci când programul are DataModule, păstrarea componentelor pentru a se conecta la baza de date, și sunteți în forma principală OnCreate încearcă să acceseze baza de date.
Formulare create manual
Oponenții Delphi Bucura-te - aici este pentru proiecte mici si Delphi se pot potrivi, dar pentru grave - nu. O soluție a problemei este simplă. Mai întâi trebuie să răspundă la întrebarea: „De ce a crea o forma care nu va fi afișat“. De exemplu, forma „Despre“. Sunt mai mult decât sigur că în fiecare sesiune de lucru cu utilizatorii de program nu-l deschide. Dar pentru mulți oameni ca să pună un frumos poze mari, diverse efecte speciale.
Să scrie cod mai optim pentru ferestre tip „Despre“.
Primul lucru de făcut formă liberă (o traducere a formularului disponibil Delphi). Acest lucru se poate face în două moduri. Puteți deschide pur și simplu fereastra de setări de proiect din fila Formulare (meniul Project - Options). Acolo veți vedea două liste. Dreptul este probabil să fie gol - că există forme libere. Și pe stânga sunt generate automat. Faceți dublu clic pe mouse-ul pe numele formularului nostru, care va fi probabil numit AboutForm (Ai pare Form23 sau ceva în acest tip? Urgent schimba numele, astfel încât să nu se poate trăi, pentru că școala nu se referă la elev al elevilor 3 „“ elev 15 „?). Ea se mută la lista de pe dreapta.
Următorul pas este de a adăuga o metodă de clasă pentru formularul nostru. Metode de clasă - acestea sunt metodele care pot fi numite o clasă, nu un obiect. Asta este, nu este necesar să se creeze un obiect. În special, constructorul clasei este metoda - altfel crea obiecte ar fi imposibil.
1. Adăugați tehnica de mucegai-o parte publică, e așa: 2. Apăsați pe Ctrl + Shift + C de tratare a primi gol.
Această metodologie poate fi aplicată și altor forme de acest tip - cei care au nevoie pentru a arăta și închide. Acest formular poate fi directoare sau forme informaționale.
În cazul nostru, formularul trebuie să fie „OK“, dar pentru a scrie stapanului ei cu un singur rând Închide într-un fel de urât. Dar există o soluție frumoasă - stabilit în butonul Properties ModalResult egal mrOk. Acum, forma modală se va închide.
Hai să extindem formularul „Despre“. Adăugați capacitatea de a schimba inscripția de pe acest formular (pentru mine va fi o etichetă, care conține denumirea produsului). În acest scop, metoda noastră atasaza parametrul. În total, acest lucru va arata undeva așa: și, în consecință, provocarea: Frumusetea acestei metode este că, dacă te-ai decis să afișeze denumirea produsului nu este în etichetă, iar pe componenta cu virf, doar descarcat, nu trebuie să lopata întregul proiect în căutarea pentru toate apelurile formular. Și dacă lucrați într-o echipă, atunci colegii dvs. nu vor trebui să fie explicative „mâzgălească“ cum, unde și de ce ai nevoie pentru a corecta.
Aceasta, la prima vedere, numele de benzi desenate bine arată un al treilea tip de forme, dintre care puțini au citit. Acest formular, care este creat doar atunci când este accesat. Și pot fi eliminate atunci când acestea sunt închise. În multe cazuri, aceste forme sunt un substitut bun pentru auto-create.
Asigurați-o astfel pb formă simplă de obicei. La început, o facem gratis. Am trecut deja un pic mai mare. Următorul lucru pe care rescrie o linie de genul: pe următoarele: Sub linia a adăuga acest: În aceste linii vom verifica dacă formularul a fost creat, acesta returnează o referință la acesta. Dacă nu - creați.
Cel mai minunat, că nu este necesar să se refacă restul codului. Asta este, puteți scrie în mod liber LazyForm.Show; și să nu se teamă că nu va apărea, dar în schimb va fi o fereastră cu un mesaj de eroare. Acest formular poate fi închis, deschis din nou. Puteți face modal.
Dar această formă, de asemenea, există un dezavantaj. Dacă undeva în destructor va fi numit, atunci consecințele vor fi deplorabilă, dacă doriți să vedeți din nou formularul. Dar pentru a remedia problema, se adaugă suficient eveniment OnDestroy doar o singură linie - privateForm: = zero;
De asemenea, această formă poate fi instruit pentru a apela automat destructor atunci când îl închideți. Pentru a face acest lucru, în cazul OnClose insera un rând de acțiune: = caFree;
Puteți înlocui caFree pe caHide - aceasta este o formă comună de comportament - trebuie doar să scape.
Există, de asemenea, caMinimize - formular vor fi eliminate, dar nu să se ascundă. Și ultima opțiune - caNone. Pur și simplu face ca „nu fac nimic“. Această opțiune este foarte utilă atunci când pune pe formular și datele înainte de a închide formularul pe care doriți să le verifice. Verificați în acest caz, și în cazul în care nu-i place - trebuie doar să setați-o mai mare, iar forma nu este închisă. Dar eu sfătuiesc să nu exagerați, iar apoi formularul nu poate fi închisă la toate. Codul corect va arata undeva ca aceasta: actiuni de grup
Uneori, atunci când este deschis multe forme, vreau să „ceară“ orice formă pentru a efectua o acțiune. La prima vedere se pare că aveți nevoie pentru a stoca undeva serie de forme deschise. Dar pentru ca toate acestea să funcționeze în mod constant, avem o mulțime de muncă grea.
Dar Delphi ne oferă un instrument convenabil. Aceasta conduce pe propria lor listă a tuturor formelor deschise. Accesul la această matrice pentru a obține cu ușurință. Numărul de forme deschise - Screen.FormCount. Consultați o formă specifică - Screen.Forms [index]. Să considerăm un exemplu specific - pentru a închide toate formele de aplicare, în plus față de cel principal. Dacă te uiți atent, nu este nimic neobișnuit în acest cod nu sunt. Un pic remake acest cod, puteți modifica, de exemplu, titlurile tuturor formelor.
Să mergem puțin mai departe. Aș dori să se refere la o anumită formă a metodei. Se pare că acest lucru se poate face fără a cunoaște tipul de formular, trebuie să știți doar numele metodei și numărul de parametri. Atașat veți găsi un exemplu (director AllForm), la fel ca toate formele de a executa o metodă numită. Codul în sine este plasat într-o unitate separată și poate fi utilizată în orice aplicație. Există doar două restricții:
- Metoda obyavlen trebuie să fie publicate în secțiunea (fără ca acest lucru în nici un fel); - tipul și numărul de parametri trebuie să fie cunoscute. În exemplul de metodă este invocată fără parametri.
Uneori, când se pare că adăugarea de noi funcționalități la un proiect care rulează rezultate în jumătate din codul de procesare, codul de depanare lung, care nu se aplică codul de adăugat, în funcție de sunet logica, atunci aplicația este prost concepută. Întotdeauna merită să urmeze o regulă simplă - „muștele separat, cotlete separat“ Aceasta este, diferit în codul scop nu ar trebui să fie într-un singur loc.
Asta e, noroc!