Delphi notează programatorul

Despre dosarul proiectului

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. La momentul inițial pe ecran va fi vizibilă numai o singură fereastră forma principală de aplicare (a creat prima referire la CreateForm), iar celelalte ferestre obiecte pot fi create în cadrul programului înainte de redare fereastra corespunzătoare.

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ă fișierul proiectului (Trial.dpr), în care versiunea de încercare a programului nu poate fi rulată 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 în altă locație menținând în același timp performanțele sale, trebuie să mai întâi utilizați opțiunea Fișier | Salvare proiect Ca copie în acest dosar a fișierului de proiect, și apoi utilizați opțiunea Fișier | Salvare ca pentru a transfera la toate modulele legate de proiect: numai atunci Delphi va putea face corecțiile necesare la dosarul 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 listează unele dintre funcțiile de Windows, care nu încapsulează clasa TCanvas și pot varia în mod semnificativ producția de text (el cel mai sărăcit în limitele înguste ale TCanvas).

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ă este mai mare de 0 - determină înălțimea "locului semnului" (luând în considerare elementele care ies peste simbolul titlului î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 (CreateFont.dpr).

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 decât atât, cu litere majuscule Setup.exe, de asemenea, în mod tradițional afișat îngroșat în pantă font Times New Roman 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 (Setup.dpr):

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

Includerea formularelor în bibliotecă

În exemplele următoare (TestDLLForm.dpr) ilustrează includerea echipamentelor sub formă de DLL și utilizați în programul apelant (Listarea 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.

Mai recent, Cougar a introdus o nouă serie de surse de alimentare pentru PC-urile tradiționale - VTX, destinate utilizatorilor cu un buget limitat. În această revizuire, va fi luat în considerare modelul Cougar VTX600, care datorită caracteristicilor sale va fi unul dintre cele mai populare în această linie de surse de alimentare

La evenimentul anual Capsaicin SIGGRAPH din Los Angeles, AMD și-a consolidat poziția pe piața de PC-uri high-end cu noii procesori Ryzen Threadripper și GPU "Vega"

Pentru o construcție simplă și convenabilă a utilizatorilor obișnuiți companie de rețea ZyXEL a lansat urmatoarea versiune a platformei sale de Internet pentru conectarea la rețelele 3G / 4G prin USB-modem cu punct de acces Wi-Fi - ZyXEL Keenetic 4G III, pe care le considerăm în această recenzie

Pentru familia sa de routere și routere, ASUS a adăugat recent două modele foarte interesante: modelul 4G-AC55U și cel mai simplu 4G-N12. Acest articol va lua în considerare modelul emblematic ASUS 4G-AC55U

Young dar ambitioasa companie KREZ la inceputul acestui an a lansat un nou, model de laptop original, KREZ Ninja (modelul TM1102B32) care rulează Windows 10. Deoarece acest computer are un ecran pivotant, acesta poate servi ca o soluție universală - poate fi folosit cu succes pentru muncă, și pentru studiu și pentru jocuri

Dacă de multe ori imprimați fotografii și sunteți deja obosit să schimbați cartușele în imprimantă, acordați atenție echipamentului MFP Epson L850. O mare varietate de consumabile, o calitate excelentă a tipăririlor, o gamă largă de funcționalități - acestea sunt doar câteva dintre avantajele acestui model







Articole similare

Trimiteți-le prietenilor: