Delphi notează programatorul

Delphi: programator de note. Partea 1

Este cunoscut faptul că Delphi creează o mulțime de fișiere cu extensii pas, dfm, dpr, etc. De obicei, un programator interesat de fișiere de cod (PAS) și descrieri de forme (DFM), în timp ce ceilalți rămân din vedere, dar în zadar - acestea poartă informații importante, care pot fi (și, în unele cazuri - trebuie sa) schimbarea.







Să începem cu fișierul proiectului (dpr). De fapt, acesta conține programul real. în timp ce fișierele multiple și DLL-urile legate de proiect sunt subrutine.

Structura unui fișier de proiect care conține un singur formular este prezentat în Lista 1.

Proiectul (programul) începe cu trimiterea la metoda Initialize a obiectului aplicației globale și se termină după finalizarea metodei Run. Această metodă este centrală: vizualizează forma principală a aplicației și implementează dispecerizarea mesajelor Windows. Din ce lucrare se efectuează prin liniile de cod localizate înainte de accesarea acesteia, depinde de timpul de încărcare a aplicației și apare aspectul ecranului înainte de fereastra principală.

Metoda Initialize este prevăzută, după cum se spune, doar pentru caz și implicit nu face nimic. Pentru a funcționa, plasați cursorul pe procedura corespunzătoare fără parametri în variabila globală InitProc. Acest lucru se poate face în secțiunea de inițializare a oricărui modul (codul acestor secțiuni este activat înainte de pornirea programului principal) sau direct în corpul proiectului principal (listare 2):

Desigur, în acest din urmă caz ​​va fi mai ușor să se facă referire în mod explicit la procedura inițială din prima declarație a programului principal. În general, în marea majoritate a cazurilor, declarația Application.Initialize poate fi ștearsă fără consecințe pentru program.

Reduceți timpul de încărcare

Într-un proiect real cu mai multe forme, există de obicei apeluri multiple la metoda CreateForm între apelurile pentru inițializare și executare. cu ajutorul căruia sunt create formele utilizate în proiect. Fiecare apel la această metodă mărește timpul de încărcare al aplicației. În momentul inițial, o singură fereastră a formularului principal de aplicație va fi vizibilă pe ecran (este creată de primul apel la CreateForm), iar obiectele ferestrei rămase pot fi create în timpul funcționării programului înainte ca fereastra corespunzătoare să fie redată.

Implicit, comutatorul Auto a crea formulare (numite de opțiunea de proiect | Opțiuni de mediu Delphi) fila Instrumente preferința | caseta de validare Mediu este selectată, care determină Delphi pentru a pune orice formă nouă în lista de auto-crea formulare și de a genera apelurile operatorului corespunzător într-un fișier CreateForm proiect. Dacă ștergeți acest comutator înainte să începeți să lucrați la un proiect sau să mutați formularele inutile în lista Formulare disponibile în fereastra Project | Options. poate în mod semnificativ (uneori - de zeci de ori) să reducă timpul de încărcare a aplicației.

Ecranul până când apare fereastra principală

În lista 3 de mai jos (un exemplu este împrumutat de la sistemul de ajutor Delphi), programul creează 5 ferestre. În forma Form5 există un indicator ProgressBar1. cu ajutorul căruia se vizualizează procesul de încărcare a programului, mai precis - crearea altor ferestre.

Protejarea programului cu o parolă

Versiuni de testware

În modul descris mai sus, puteți crea versiuni de încercare a programelor care vor funcționa numai până la o anumită dată sau până când numărul de pornire va fi epuizat. Lista 5 arată un fișier de proiect în care o versiune de încercare a programului nu poate funcționa mai mult de 5 ori. Pentru a vă aminti numărul următorului run, se utilizează registrul de sistem.

Despre transferul unui proiect într-un alt folder

Apropo, această cifră ilustrează încălcarea regulii de „un proiect - un dosar“: în acest proiect, în ciuda regulii desemnate, mai multe module sunt stocate în subfoldere, ca rezultat al Delphi indică trasee lungi de acces la dosarele relevante. Dacă un astfel de proiect este copiat pe o dischetă, atunci aceste rute rămân neschimbate și compilatorul nu poate găsi fișierele necesare. Și mai rău, dacă copiați proiectul într-un alt folder de pe aceeași unitate de disc. În acest caz, începe probleme: ai schimba ceva în noul proiect, dar aplicația nu răspunde, iar dacă setați breakpoint de control la oricare dintre modulele, ar fi inaplicabilă - compilatorul va continua să utilizeze originalul fișiere, nu copii.







Dacă doriți să mutați proiectul într-un alt folder și să îl mențineți, trebuie să utilizați mai întâi fișierul | | Salvați proiectul Copiați fișierul proiectului în acest dosar și apoi utilizați fișierul | Save As pentru a transfera acolo toate modulele conectate la proiect: numai atunci Delphi va putea face corecțiile necesare la fișierul proiectului. Dar dacă toate fișierele sunt stocate într-un singur fișier, clauza de utilizări nu specifică căile de acces și astfel puteți copia fără durere toate fișierele într-un alt folder simultan.

Fișierul de configurare .dsk. în care mediul stochează informații despre starea ecranului în momentul ieșirii din Delphi, conține, de asemenea, căi de acces complete pentru deschiderea fișierelor. Când transferați un proiect, acest fișier nu trebuie copiat.

Noi diversificăm ieșirea mesajelor

Toată bogăția capabilităților vizuale ale Windows nu este deloc epuizată de setul de proprietăți și metode ale clasei TCanvas. Această clasă încapsulează numai metodele cele mai populare de lucru cu instrumentele de desen. În tabel. 1 afișează câteva funcții Windows care nu încapsulează clasa TCanvas și pot diversifica semnificativ textul (este cel mai sărac în cadrul TCanvas îngust).

Câmpurile individuale ale structurii TLogFont pentru funcția CreateFontIndirect au următoarea semnificație:

lfHeight - înălțimea fontului în puncte (1 punct = 1/72 inch); dacă mai mult de 0 - determină înălțimea "locului semnelor" (cu elementele deasupra literei majuscule în literele E, H); dacă este mai mică de 0 - specifică înălțimea simbolului "curat", dacă este 0 - înălțimea este selectată de Windows;

lfWidth - lățimea medie a caracterului; dacă este 0, lățimea este setată de Windows;

lfEscapment - unghiul de înclinare al liniei de bază a textului în zeci de grade față de direcția orizontală; valori pozitive - rotiți în sens orar; în Windows 95/98 este același cu lfOrientation;

lfOrientation - unghiul de înclinare a simbolurilor față de linia de bază; în Windows NT pentru fonturile True Type pot diferi de lfEscapment; Pentru aceasta, setați modul dispozitiv de afișare la gm_Advanced (implicit este gm_Compatible);

lfWeight - densitate font (fm_DontCare = 0 - densitate selectează pentru Windows; fm_Thin = 100 - font foarte subțire; fm_ExtraLight = 200 - foarte ușoară; fm_Light = 300 - lumină; fm_Normal = 400 - normale; fm_Medium = 500 - îngroșată; fm_SemiBold = 600 - bold; fm_Bold = 700 - bold; fm_ExtraBold = 800 - armat; fm_Heavy = 900 - grele);

lfItalic, lfUnderline, lfStrikeOut - valoare non-zero înseamnă, respectiv, un font oblic, încrucișat și subliniat;

lfCharSet - set de caractere (ANSI_CharSet = 0; default_charset = 1; Symbol_Char-Set = 2; ShiftJis_CharSet = 128; OEM_CharSet = 255);

lfOutPrecision - acuratețea reprezentării fontului; (Fonturi tip de literă și selectați vector, în cazul în care există mai multe varietăți de fonturi similare) a recomandat Out_TT_Prec sau Out_TT_Only_Prec (Numai True Type);

lfClipPrecision - determină precizia cut-off etichetează limitele desen (Clip_Character_Precis Clip_Embedded, Clip_Mask, Clip_TT_Always, Clip_Default_Precis - recomandat, Clip_LH_Angles Clip_Stroke_Precis ..);

lfQuality - determină calitatea desenului (Default_Quality, Draft_Quality, Proof_Quality);

lfPitchAndFamily - în patru cifre inferioare este specificat tipul fontului, în cele patru vârstnice - familia sa;

lfFaceName este numele căștii de fonturi.

În Fig. Figura 2 prezintă un exemplu de afișare a fonturilor înclinate create de funcția CreateFontIndirect.

Modul în care este implementat acest exemplu este prezentat în listare 6.

Parametrul Format al funcției DrawText poate conține unul sau mai multe pavilioane (Tabelul 2).

Dacă este setat stegul dt_CalcRect. funcția modifică înălțimea și lățimea dreptunghiului astfel încât să afișeze tot textul. Dacă sunt emise mai multe linii, lățimea ieșirii nu se modifică. Funcția returnează înălțimea adevărată a dreptunghiului de ieșire.

Parametrul Opțiuni al funcției ExtTextOut poate fi o combinație a următoarelor valori:

eto_Clipped - textul va fi tăiat de limitele Rect;

eto_Gliph_Index - procesarea blocurilor de către driverul de limbă;

eto_Opaque - fundalul este redat;

eto_RTLReading - citire de la dreapta la stânga.

Când se emite text utilizând metode standard TCanvas, fundalul caracterelor este întotdeauna redat (culoarea de fundal este returnată de către funcția GetBkColor). Dacă culoarea de fundal a personajelor diferă de fundalul panzei, rezultatul este însoțit de efecte secundare neplăcute. Dacă lăsați culoarea standard a clFaceBtn în exemplul din listare 6 pentru formular, fereastra de ieșire va fi aceeași ca în Fig. 3.

Desigur, folosind funcția SetBkColor, puteți seta culoarea formei pentru a se potrivi cu culoarea pânzei, dar acest lucru nu este întotdeauna posibil. De exemplu, în Fig. Figura 4 arată ecranul care este creat în mod tradițional de multe programe de configurare Setup.exe. Fundalul de pe acest ecran nu rămâne constant, dar trece ușor de la intens albastru la negru. În mod evident, nu puteți seta o culoare variabilă cu funcția SetBkColor. Mai mult, etichetele de titlu ale programelor Setup.exe sunt, de asemenea, afișate în mod tradițional în Times New Roman îngroșate, cu litere albe, cu o umbră neagră. Implementarea acestui efect este suficient de simplă. Deci, în general, ar trebui să abandonați desenul de fundal prin setarea modului Transparent folosind funcția SetBkMode. și imprimați inscripția de două ori: prima dată în negru și cea de-a doua - albă, deplasând a doua inscripție puțin spre stânga și spre în sus față de prima. Lista 7 ilustrează ceea ce sa spus:

În Fig. 4 arată fereastra programului de rulare.

Includerea formularelor în bibliotecă

Următoarele exemple ilustrează tehnica de includere a unui formular în DLL și de utilizare a acestuia în programul de apel (listele 8. 9 și 10).

Modulul formează DLLForm. plasat în DLL, se referă la modulul Formate standard și, prin urmare, devine Obiectul aplicației globale. care nu știe nimic despre obiectul global al programului de asteptare. În modul de apel modal, acest lucru nu contează, deoarece fereastra modală blochează activitatea apelantului. În modul de apel nemodal, sincronizați acțiunile obiectelor, de exemplu, minimizarea ferestrei principale, de exemplu, nu va reduce la minimum fereastra DLL. Sincronizarea se realizează prin faptul că descriptorul obiectului Application DLL este înlocuit cu descriptorul corespunzător al programului apelant.

Pentru mai multe informații, vă rugăm să ne contactați la Interface Ltd.







Articole similare

Trimiteți-le prietenilor: