Sunteți pe pagina 1din 23

Dezvoltarea rapida de aplicatii n Delphi

5.1 Introducere
Unii specialisti considera Delphi ca fiind versiunea RAD ( RapidApplication Development) a mediului de programare Borland Pascal. Unul dintre primele lucruri care trebuie ntelese cnd se lucreaza ntr-un mediu RAD se refera la faptul ca un mediu RAD este o tehnologie de elaborare a solutiilor unor probleme de informatica, bazata be o serie de concepte, componente si protocoale de utilizarea a acestora. Un mediu RAD devine cu adevarat puternic n minile unui programator daca acesta stie: Sa modeleze obiect orientat solutia unei probleme date; Sa utilizeze suportul Delphi pentru progranmare obiect orientata; Sa utilizeze componentele Delphi n procesul de dezvoltare rapida de aplicatii; Sa reutilizeze propriul effort de dezvoltarea rapida a aplicatiilor Delphi. Deprinderea de a modela obiect orientat solutia unei probleme se formeaza prin nsusirea unei metodologii de modelare adecvate si prin mult exercitiu n contextul respectivei metodologii. Elementele referitoare la suportul Delphi pentru programarea obiect orientata le-am prezentat n Capitolele 2 si 3. n acest capitol voi ncerca o incursiune selectiva n ceea ce nseamna oferta Delphi de componente si facilitati pentru operationalizarea paradigmei RAD. nainte de a face acest lucru voi ncerca sa explic cititorului ce se ntelege mai precis prin sintagma RAD, strns legata n ingineria softului de ideea de prototipizare. RELAIA RAD-PROTOTIPIZARE Multe modele de dezvoltare a sistemelor soft se bazeaza pe utilizarea, n anumite momente, a abordarilor iterative (de exemplu, analiza poate implica o serie de sarcini care sunt iterativ repetate pna cnd modelele analizei sunt considerate complete). Desi promite un cadru mai realist de dezvoltare a softului o astfel de abordare poate fi usor descumpanita de constatarea ca, n zilele noastre utilizatorul final sau indirect stie sa foloseasca sistemul odata ce acesta a fost livrat, ceea ce creeaza foarte repede mprejurarile necesare pentru ca acesta (utilizatorul) sa observe eventualele neconcordante ntre cerintele lui fata de sistem si cele implementate efectiv. Modelul prototipizarii ofera o abordare care, potential, poate contribui la eliminarea omisiunilor si ambiguitatilor care pot exista n cerinte. n ingineria softului se numeste prototip un sistem sau un sistem partial finisat care este construit rapid pentru a explora anumite aspecte ale cerintelor fata de sistem si care nu este considerat sistem gata de livrarea finala la utilizator.

Un sistem soft aflat n faza de prototip se deosebeste de un sistem soft gata de livrare prin o serie de omisiuni asumate sau strecurate involuntar n faza de codificare (implementare). Astfel ca un prototip are, n mod obisnuit, o functionalitate incompleta (capacitate limitata de procesare a datelor, performante reduse n timpul executiei, siguranta n functionare problematica, etc.). Dezvoltarea prototipului este posibila efectiv doar utiliznd instrumente pentru dezvoltarea rapida a sistemelor soft (medii vizuale de proiectare, medii vizuale de programare, etc.). Cnd realizam un prototip putem avea diferite obiective n minte. Putem construi un prototip pentru a investiga cerintele utilizator; n acest scop ne putem focaliza efortul de dezvoltare pe realizarea interfetei cu utilizatorul pentru a stabili ce date asteapta utilizatorul de la sistem si ce date furnizeaza utilizatorul sistemului. Prototipul poate fi folosit pentru a determina cel mai adecvat gen de interfata. Putem construi un prototip pentru a stabili daca o platforma de implementare anume poate suporta anumite cerinte de prelucrare. n sfrsit, un prototip ar putea sa urmareasca determinarea eficientei unui limbaj particular, a unui SGBD sau a unei infrastructuri de comunicatie. O perspectiva mai clara asupra proprietatilor modelului MP putem obtine si din Figura 3.10.

Figura 5.1 Dezvoltarea rapida a softului utiliznd prototipizarea Asadar, fazele principale necesare pentru a 131e41b pregati un prototip sunt: Efectuarea unei analize initiale; Definirea obiectivelor prototipului ; Specificarea prototipului; Construirea prototipului; Evaluarea prototipului si stabilirea schimbarilor de efectuat. Efectuarea unei analize initiale ntreaga activitate de dezvoltare a softului foloseste resurse valoroase. nceperea unui exercitiu de prototipizare fara o analiza initiala este posibil sa conduca la o activitate nestructurata si gresit focalizata care va produce un soft proiectat nesatisfacator. Definirea obiectivelor prototipului Prototipizarea este de dorit sa aiba obiective clar stabilite. Un exercitiu de prototipizare poate implica multe iteratii, fiecare iteratie avnd drept rezultat o anumita mbunatatire a prototipului. Pentru participantii la un exercitiu de prototipizare, la un moment dat poate fi dificil de stabilit daca prototipizarea trebuie sau nu sa continue. Pentru evitarea unei astfel de posibilitati definirea clara a obiectivelor de ndeplinit poate fi de mare folos. Specificarea prototipului Desi prototipul nu este realizat n perspectiva unor operatii de extindere este, evident, important sa aiba un comportament scontat. De aceea, este absolut firesc sa luam n calcul posibilitatea unor modificari care sa apropie prototipul ct mai mult de comportamentul scontat. Aceste modificari sunt mult mai usor de facut daca softul este realizat potrivit unor principii de proiectare profunde. Construirea prototipului Deoarece este important ca prototipul sa fie realizat rapid este firesc ca n aceasta faza sa se apeleze la un mediu de dezvoltare rapida a plicatiilor (Delphi, Visual Basic, Visual C, C-Builder, etc.). Evaluarea prototipului si stabilirea schimbarilor de efectuat Motivul principal pentru care realizam un prototip este testarea si explorarea anumitor aspecte ale sistemului soft de realizat. Prototipul trebuie evaluat n conformitate cu obiectivele identificate la nceperea exercitiului de prototipizare. Daca obiectivele nu au fost ndeplinite, evaluarea are drept consecinta o serie de modificari care urmaresc apropierea prototipului de obiectivele asumate.

Dupa cum se vede si din Figura 5.1, ultimele trei faze sunt parcurse ciclic, pna cnd toate obiectivele asumate de exercitiul de prototipizare sunt ndeplinite. n cele ce urmeaza putem prezenta avantajele acestui model dar si o serie de aspecte de care ar trebui sa tinem cont nainte de a ne aventura n prototipizare. Avantaje: Ilustrarea timpurie a functionalitatii sistemului ajuta la identificarea tuturor dezacordurilor dintre specialistul IS si client; Cerintele client omise au sanse sa fie identificate; Dificultatile legate de proiectarea interfetei pot fi constientizate si rezolvate; Realizabilitatea si utilitatea sistemului soft pot fi testate chiar daca, prin natura lui, prototipul este incomplet. Probleme: Clientul poate percepe prototipul ca parte a sistemului final dar nu poate ntelege amploarea efortului cerut, uneori, de realizarea formei finale a sistemului, motiv pentru care are senzatia ca acesta (sistemul final) trebuie livrat mai curnd dect este posibil n realitate; Prototipul poate distrage atentia de la aspectele functionale (uneori critice pentru sistem) catre problemele de interfata (fetisizate oarecum de nevoia de a da permanent satisfactie clientului/utilizatorului); Prototipizarea se bazeaza pe o implicare semnificativa a utilizatorului; Managementul care se bazeaza pe modelul MP are de luat decizii dificile de-a lungul ntregului ciclu de viata. Pentru o mai buna ntelegere a ideilor prezentate mai sus, i-ar prinde bine cititorului o lectura atenta a unei carti de initiere n ingineria softului. Recomand, cartea cu titlul INIERE N INGINERIA SISTEMELOR SOFT aparuta la Editura Albastra din Cluj_Napoca, autor D. Bocu.

5.2 Centrul de control al mediului Delphi


Numit de unii si fereastra principala a mediului, centrul de control se compune din urmatoarele sectiuni principale: Bara meniu Aceasta sectiune este unul dintre cele mai comune elemente ale aplicatiilor Windows. n Delphi, bara meniu asigura mecanisme de acces la toate functiile IDE Delphi, precum: instalarea componentelor, setarea mediului si a optiunilor de compilare, crearea de noi forme si unit-uri, etc. Bara meniu apare imediat sub bara de titlu a ferestrei principale. Containerul cu acceleratori (Speedbar)

n aceasta sectiune a ferestrei principale se gasesc o serie de elemente shortcut care permit accesul rapid la 14 dintre cele mai mult utilizate comenzi ale mediului Delphi. Aceste comenzi asigura functiile prezentate n tabelul de mai jos. Containerul cu acceleratori este situat sub bara meniu n stnga. Nr. crt. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Nume accelerator Open Project Save all Add file to project Select unit from list Select form from list Run Pause Open File Save File Remove file from project Toggle Form/Unit New form Trace into Step over Descriere. Deschide un proiect existent. Echivalenta cu comanda File / Open Salveaza toate elementele proiectului actual. Echivalenta cu comanda File / Save All Adaugarea unui fisier la proiect. Echivalenta cu comanda File / Add to project Selectarea unui unit din lista. Echivalenta cu comanda View / Units(Ctrl+F12) Selectare unei forme din lista. Echivalenta cu comanda View / Forms(Shift+F12) Compilarea si lansarea n executie a aplicatiei. Echivalenta cu comanda Run / Run (F9) Pauza temporara n executia programului. Echivalenta cu comanda Run / Program Pause ncarcare proiect, forma, unitate sau fisier text n editorul de coduri. Echivalenta cu comanda File / Open. Salvarea modificarilor efectuate n fisierele incluse n proiect. Echivalenta cu comanda File / Save (Ctrl+S). stergerea unui unit din proiectul curent. Echivalenta cu comanda File / Remove from project. Comutare ntre forma si unit-ul asociat. Echivalenta cu comanda View/Toggle Form/Unit (F12). Crearea unei forme vide si a unei noi unitati si adaugarea lor la proiectul curent. Echivalenta cu comanda File / New Form. Executia pas cu pas a programului (inclusiv instructiunile continute n subprograme). Echivalenta cu comanda Run/Trace into(F7). Executia pas cu pas a programului. Subprogramele apelate sunt execuate ntr-un singur pas. Echivalenta cu comanda Run/Step over(F8).

Paleta de componente Contine peste 100 de componente utilizate n dezvoltarea aplicatiilor, care sunt organizate n mai multe pagini. Componentele pot fi vizuale (de exemplu butoane, linii de editare,etc.) sau nevizuale (de exemplu ferestrele standard de dialog, ceasul sistemului, etc.). O componenta

se numeste vizuala daca daca este vizibila n timpul executiei proiectului n care apare. O componenta se numeste nevizuala daca n timpul proiectarii este prezenta ca icoana, iar la executia proiectului nu se vede sau este vizibila doar daca este activata prin metode dedicate. Paleta de componente repartizeaza componentele n liste astfel: Lista de componente Standard Sub aceasta eticheta puteti gasi toate componentele standard pe care le puteti folosi cu Delphi: etichete, meniuri, cmpuri de editare, butoane de apasare, butoane radio, panouri. Fiecare dintre aceste componente contine o functie de baza ceruta de majoritatea aplicatiilor. Lista de componente Additional Sub aceasta eticheta se regasesc cteva dintre componentele grafice de baza, cum ar fi butoanele de tip BitBtn, tipul Tshape, precum si o serie de alte componente destinate realizarii unor obiective speciale n aplicatii Delphi (Bevel, ScrollBox, Chart, StaticText, etc.). Lista de componente Win32 Componentele din aceasta lista utilizeaza accesul pe 32 biti (Windows 95/98 si NT). Lista contine toate noile componente ale interfetei, puse la dispozitie de mediul Windows 95/98/NT (ImageList- Lista de imagini, ProgressBar- Bara de progres, StatusBar- Linia de stare, TrackBar-Bara de glisare,etc.). Lista de componente System Aceasta lista contine cteva dintre cele mai interesante componente puse la dispozitie de Delphi. Aceasta lista poate fi folosita, de exemplu, pentru a adauga un cronometru aplicatiei Dvs..Tot n aceasta lista veti gasi un program media player si componente DDE. Lista de componente Data Access Componentele din aceasta lista permit realizarea legaturilor spre articolele diferitelor baze de date. Ele sunt componente invizibile (n timpul executiei nu sunt afisate pe ecran). Dintre componentele din aceasta lista semnalam: Componenta DataSource care realizeaza legatura ntre componentele invizibile Table, Query, StoredProcsi componentele vizibile de acces spre baze de date (de exemplu TDBGrid). Componenta Table ncarca date dintr-un tabel, care se transmit, prin intermediul componentei DataSource) spre componentele vizuale de acces la baze de date. Query Permite utilizarea diferitelor instructiuni SQL.

Lista de componente Data Controls

Componentele din aceasta lista sunt destinate afisarii si editarii articolelor unei baze de date. Sunt componente vizuale, care asigura interfata vizuala ntre utilizator si o baza de date. Dintre componentele din aceasta lista semnalam: DBGrid Permite afisarea articolelor unei baze de date sub forma unui tabel (retea). Componenta permite si editarea articolelor bazei. DBNavigator - Creeaza un panou format din mai multe butoane de comanda, cu ajutorul carora se poate naviga printre nregistrarile bazei de date. s.a.m.d.

Lista de componente Dialogs Componentele acestei liste permit afisarea si utilizarea ferestrelor de dialog, care sunt specifice sistemului de operare Windows 95 (deschideri, salvari, tipariri de fisiere).

Alte liste de componente prezente n Paleta de componente: Internet, Decision Cube, Qreport, Win3.1, Samples, ActiveX. Inspectorul de obiecte Inspectorul de obiecte al mediului Delphi este prevazut cu doua pagini. Pagina Properties permite stabilirea proprietatilor componentelor n timpul procesului de proiectare. Pagina Events gestioneaza diferitele evenimente legate de componentele aplicatiei. La rndul ei, pagina Properties este prevazuta cu doua coloane. n coloana din stnga sunt listate denumirile proprietatilor. n coloana din dreapta sunt afisate valorile actuale aferente diverselor proprietati. Pentru a atribui o anumita valoare unei proprietati, se efectuiaza un click de mouse pe numele proprietatii. Numele proprietatii fiind selectat, atribuirea unei valori la o proprietate poate fi realizata n trei moduri diferite: prin linia de editare aferenta proprietatii; prin lista derulanta corespunzatoare proprietatii; prin intermediul unei ferestre de dialog.

Fereastra formei n procesul de dezvoltare a unei aplicatii Delphi, forma ocupa un loc central prin proprietatile si evenimentele cu care se poate asocia. Se poate afirma, pe drept cuvnt, ca n jurul conceptului de forma se desfasoara partea cea mai importanta a activitatilor specifice unui demers RAD de realizare a unei aplicatii utilizator. Pentru descrierea formelor se poate apela, potential, la 38 de proprietati, care pot fi stabilite, n perioada de proiectare prin intermediul inspectorului de obiecte, sau modificate, la nevoie n timpul executiei aplicatiei.

Totodata, formele pot reactiona la 21 de evenimente. De semnalat faptul ca, majoritatea proprietatilor si evenimentelor formelor sunt identice cu proprietatile si evenimentele altor componente importante pentru realizarea aplicatiilor Delphi. Acesta este motivul pentru care, vom prezenta, mai jos, cele mai importante proprietati si evenimente referitoare la forme. Proprietatile formelor Proprietatea ActiveControl Este utilizata atunci cnd pe forma au fost asezate mai multe componente si se doreste specificarea componentei care trebuie sa fie n focar n momentul activarii formei sau la un moment dat n timp ce forma este activa. Proprietatea poate fi setata att prin intermediul inspectorului de obiecte, n faza de proiectare, ct si n timpul executiei programului, printr-o atribuire de tipul: <Variabila_Forma_gazda>.ActiveControl:=<Nume_Componenta_focalizata>; Daca forma gazda a componentei memorate n proprietatea ActiveControl nu este n focar, atunci n momentul n care forma ajunge n focar, componenta memorata n Active Control este focalizata. Proprietatea AutoScroll Este o proprietate de tip boolean care se refera la modul de utilizare a barelor de defilare atasate formei. n cazul n care pentru aceasta proprietate se stabileste valoarea True, care este si valoarea implicita, atunci n caz de nevoie, n executie forma va fi prevazuta cu bare de defilare, daca dimensiunile componentelor asezate pe forma depasesc dimensiunile formei. Daca proprietate este setata la False, atunci forma nu va mai fi nzestrata automat cu bare de defilare. n acest caz atasarea barelor de defilare poate fi realizata prin intermediul proprietatilor HorzScrollBar siVertScrollBar. Proprietatea BorderIcons Este o proprietate compusa care se refera la existenta, n linia de titlu a formei, a meniului sistem si a butoanelor de minimizare/maximizare a formei. Aceasta proprietate este de tip multime, valorile posibile fiind: Valoare biSystemMenu biMinimize biMaximize biHelp Semnificatie Forma este prevazuta cu meniul sistem Forma este prevazuta cu un buton de minimizare Forma este prevazuta cu un buton de maximizare Daca proprietatea BorderStyle contine valoareabsDialog sau daca sunt excluse valorile biMinimize sibiMaximize, atunci n bara de titlu apare un semn de ntrebare. Daca se efectuiaza un click pe acest semn, cursorul de mouse va avea forma definita de constanta crHelp.

Proprietatea BorderStyle

Se refera la stilul chenarului formei. Valorile posibile ale acestei proprietati sunt: Valoare bsDialog bsSingle bsNone bsSizeable bsToolWindows bsSizeToolWin Proprietatea Caption Este o proprietate de tip string care specifica un sir de caractere care este afisat n linia de titlu a formei. n cazul componentelor aceasta proprietate desemneaza eticheta atasata componentei. n acest ultim caz, litera precedata de caracterul & este litera de selectie a componentei, care va apare subliniata (Componenta poate fi selectata prin combinatia Alt+Litera subliniata). Proprietatile ClientHeight si ClientWidth
Acestea sunt doua proprietati de tip integer care specifica naltimea si, respectiv, latimea zonei client a formei. Aceste valori sunt specificate n puncte. Zona client este aria utilizabila n interiorul chenarului formei.

Semnificatie Chenar neredimensionabil; chenarul standard al ferestrelor de dialog. Chenar neredimensionabil, desenat cu o linie simpla Chenar neredimensionabil, desenat cu linie invizibila Chenar redimensionabil standard Similar cu bsSingle, dar este prevazut cu un mic titlu Similar cu bsSizeable, dar este prevazut cu un mic titlu

Proprietatea Color Proprietatea este de tip TColor= longint, stabilind culoarea de fond a formei. Pentru initializarea valorica a acestei proprietati pot fi folosite constante predefinite sau valori returnate de functia RGB. Valoarea implicita este clBtnFace . Daca pentru proprietatea ParentColor corespunzatoare unei componente se ia valoarea True , si se modifica valoarea proprietatii Color corespunzatoare formei proprietar al componentei, atunci se va modifica automat si culoarea componentei. Proprietatea Ctl3D Fiind de tip boolean, aceasta proprietate stabileste aspectul tridimensional al formei pentru True si aspect bidimensional pentru False. Valoarea implicita este True. Daca pentru proprietatea ParentCtl3D corespunzatoare unei componente se ia valoarea True, si se modifica valoarea proprietatii Ctl3D corespunzatoare formei proprietar al componentei, atunci se va modifica automat si aspectul componentei. Proprietatea Cursor Stabileste imaginea utilizata pentru reprezentarea cursorului de mouse. Pentru selectarea unei imagini se vor folosi diferitele constante predefinite asociate. Valoarea implicita este crDefault. Proprietatea Enabled si aceasta proprietate este de tip boolean si se refera la accesibilitatea formei sau componentei.Daca proprietatea este setata la True, care este si valoarea implicita, atunci forma sau componenta va reactiona la diferite evenimente pe care este abilitata sa le trateze. Daca se alege varianta False, forma sau componenta este inhibata. Valoarea acestei proprietati se

modifica, de regula, n timpul executiei. Astfel, daca la un moment dat, un anumit buton trebuie dezactivat, proprietatea Enabled a acestuia este setata la False. Evident, la nevoie, componenta dezactivata poate fi reactivata. Proprietatea compusa Font Stabileste fontul utilizat n textele care sunt afisate pe obiectul Canvas al formei, precum si la textele aferente componentelor asezate pe forma. Fontul utilizat poate fi definit n perioada de elaborare a proiectului, nsa poate fi modificat si n timpul executiei, prin redefinirea subproprietatilor Color, Height, Name, Pitch, Size, sau Style. Astfel ca, daca este necesar, sunt absolut plauzibile setarile de mai jos. Font.Color:=clBlue; Font.Size:=18; Font.Style:=[fsBold]; Proprietatea FormStyle Stabileste stilul formei. Valorile posibile ale acestei proprietati sunt urmatoarele: Valoare fsNormal fsMDIChild fsMDIForm fsStayOnTop Semnificatie Forma creaza o fereastra normala (nici MDI copil, nici MDI parinte). Valoare implicita. Forma creeaza o fereastra MDI copil. Forma creeaza o fereastra MDI parinte. Forma va fi afisata deasupra celorlaltor forme utilizate n proiect.

Propriettile Height si Width


Aceste proprietati de tip integer stabilesc naltimea, respectiv, latimea formei sau componentei, n puncte care include si dimensiunile rezervate chenarelor.

Proprietatea Hint Proprietate de tip string, specifica un text explicativ care va fi afisat atunci cnd cursorul de mouse este asezat deasupra unei forme sau componente. Acest text este afisat numai atunci cnd proprietatea ShowHint (de tip boolean) este setata la True. Proprietatile compuse HorzScrollBar si VertScrollBar Stabilesc daca forma este prevazuta sau nu cu bare de defilare orizontale si/sau verticale. Subproprietatile barelor de defilare sunt prezentate n tabelul urmator: Subproprietate Increment (O valoare cuprinsa ntre 1 si 32767, valoarea implicita este 8) Descriere Stabileste distanta de deplasare a componentei sau imaginii din forma n momentul n care utilizatorul efectueaza un click pe unul din butoanele ci sageti situate n extremitatile barelor de defilare.

Margin Stabileste momentul de afisare a barei de defilare. (De tip word, valoarea Aceasta proprietate determina numarul minim de implicita 0) puncte care separa componentele formei si muchia formei. n executie, daca o componenta ajunge sa fie la o distanta mai mica dect Margin puncte de la muchie si daca proprietatea Visible este setata laTrue, atunci se afiseaza o bara de defilare. Position Comunica pozitia curenta a cursorului glisat al barei de (De tip integer, valoarea defilare. Valoarea acestei proprietati este actualizata implicita 0) automat, n timpul executiei aplicatiei. Range Dimensiunea maxima de defilare, exprimata n puncte. (De tip integer, valoarea La bara de defilare verticala aceasta valoare trebuie sa implicita 0) fie mai mare dect valoarea proprietatii Height (n caz contrar, bara verticala este invizibila). La bara de defilare orizontala aceasta valoare trebuie sa fie mai mare dect valoarea proprietatii ClientWidth (n caz contrar, bara orizontala este invizibila). Tracking Daca se alege valoarea True, imaginea / componenta (De tip boolean, valoarea din forma se deplaseaza mpreuna cu butonul de glisare implicita false) tras de utilizator. Daca se alege valoarea False, imaginea ramne statica ct timp utilizatorul trage butonul de glisare, adica actualizarea imaginii defilate are loc numai n momentul eliberarii butonului glisant al barei de defilare. Visible Se refera la vizibilitatea barei de defilare. Daca se alege (De tip boolean, valoare valoarea True si daca componenta se afla la o distanta implicita True) mai mica dect Margin puncte de muchia formei, atunci bara de defilare devine vizibila. Proprietatea Icon Specifica simbolul grafic care va fi utilizat cnd forma este minimizata. Proprietatea KeyPreview De tip boolean, se refera la modul de gestiune al evenimentelor referitoare la tastatura (OnKeyDown,OnKeyPress, OnKeyUp). Daca pentru aceasta proprietate se alege valoarea True, atunci evenimentele referitoare la tastatura sunt gestionate de forma actuala, nu de componentele asezate pe forma, chiar daca n momentul respectiv n focar se afla o componenta. Astfel ca, daca, de exemplu, forma contine un buton de comanda care este n focar, daca utilizatorul apasa o tasta, evenimentul aferent va fi gestionat de procedurile formei, nu de procedurile butonului. Proprietatile Left si Top Stabilesc abscisa, respectiv ordonata : -formei fata de coltul stnga sus al ecranului; -componentei fata de coltul stnga sus al formei proprietar; -componentei fata de coltul stnga sus al unei componente de tip container.

Valorile acestor proprietati sunt date n puncte. Proprietatea Menu De tip TmainMenu , stabileste componenta de tip meniu principal care este utilizata de forma la un moment dat. n perioada de elaborare a proiectului aceasta proprietate este initializata automat cu prima componenta MainMenuasezata pe forma. n timpul executiei aceasta valoare poate fi modificata, printr-o instructiune de atribuire, ceea ce nseamna ca o forma poate sa foloseasca mai multe componente MainMenu. De analizat si exemplul de mai jos. procedure TForm1.SchimbMeniu_1; begin Menu:=MainMenu2; end; procedure TForm1.SchimbMeniu_2; begin Menu:=MainMenu1; end; Proprietatea PopupMenu De tip TPopupMenu, identifica componenta de meniu flotant care este utilizata de forma la un moment dat. Se mentioneaza faptul ca aceasta proprietate nu este initializata automat cu componenta PopupMenu asezata pe forma. n executie valoarea acestei proprietati poate fi modificata printr-o instructiune de atribuire , astfel ca o forma poate sa folosessca, n functie de context, mai multe componente PoppupMenu. Proprietatea Name De tip string, este utilizata pentru atribuirea unui nume( ca variabile obiect) unei forme sau componente. Atribuirile de nume sunt realizate automat de sistemul Delphi, nsa aceste denumiri predefinite (Form1,Form2,Button1,Button2,,etc.), nu ntotdeauna pe gustul oricarui programator, pot fi modificate, codul aplicatiei putnd fi personalizat si devenind astfel mai lizibil.Daca proprietatea Caption nu a fost nca modificata si daca se atribuie un nou nume unei forme, atunci proprietatea Caption va fi modificata automat la noul nume. Proprietatea ParentFont De tip boolean, se refera la modul de selectie al fontului corespunzator unei componente. Daca se alege valoareaTrue , atunci fontul utilizat de o componenta este identic cu fontul utilizat de forma proprietar. Daca se alege varianta False, atunci fontul componentei nu va depinde de fontul formei proprietar (adica proprietatea Font a componentei este prioritara fata de proprietatea Font a formei gazda. Valoarea implicita a acestei proprietati este False.

Proprietatea Position
Se refera la dimensiunea si locul de plasare a formei n timpul executiei, fata de dimensiunea si locul de amplasare care au fost utilizate n timpul proiectarii. Valorile posibile ale acestei proprietati sunt urmatoarele:

Valoare poDesigned poDefault poDefaultPosOnly poDefaultSizeOnly poScreenCenter

Semnificatie Dimensiunea si pozitia formei n executie coincid cu dimensiunea si pozitia formei utilizata n timpul proiectarii. Valoare implicita. Nu se conserva nici dimensiunea, nici pozitia initiala a formei; noile valori sunt determinate de sistemul Delphi. n executie va fi conservata dimensiunea formei, nsa pozitia acesteia va fi stabilita de sistemul Delphi. n executie va fi conservata pozitia formei, nsa dimensiunea acesteia va fi stabilita de sistemul Delphi. La executie se conserva dimensiunea formei, nsa aceasta va fi plasata centrat pe ecran.

Proprietatea PrintScale Se refera la modul de tiparire a formei, mai precis la modul de alegere a scalei utilizate n procesul de tiparire. Valorile posibile ale acestei proprietati sunt : Valoare poNone poProportional poPrintToFit Semnificatie Nu se face nici o scalare speciala, astfel nct forma tiparita la imprimanta poate sa se deosebeasa de forma afisata pe ecran Se va utiliza o scala prin care dimensiunea formei tiparite va fi aprozimativ egala cu dimensiunea formei afisate pe ecran (WYSIWYG). Valoare implicita. Forma este tiparita n asa fel nct se conserva proportiile afisate pe ecran, dar dimensiunea de tiparire este determinata n asa fel nct forma va ncape pe foaia utilizata.

Proprietatea Scaled De tip boolean, stabileste modul de dimensionare a formei, n functie de proprietatea PixelsPerInch. Daca se alege valoarea True, care este si valoarea implicita, atunci proprietatea PixelsPerIInch stabileste numarul de puncte care va corespunde ntr-un inch al formei. Daca se alege valoarea False, atunci valoarea specificata n proprietatea PixelsPerInch va fi neglijata. Proprietatea Tag De tip longint, este utilizata att n cazul formelor ct si n cazul componentelor. Cu ajutorul acestei proprietati, se poate adauga o valoare formelor sau componentelor. Aceasta proprietate nu are o semnificatie predefinita, putnd fi utilizata n diverse scopuri de catre programatori. Prezentam , n continuare un exemplu de utilizare a proprietatiiTag. unit Unit1;

interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormClick(Sender: TObject); private

public

end; var Form1: TForm1; B:TButton; implementation procedure TForm1.Button1Click(Sender: TObject); begin B:=Button1; end; procedure TForm1.Button2Click(Sender: TObject); begin

B:=Button2; end; procedure TForm1.FormClick(Sender: TObject); begin if Assigned(B) then case B.Tag of 1: Form1.Caption:='Butonul 1...'; 2: Form1.Caption:='Butonul 2...'; end; end; end. Proprietatea Visible
De tip boolean, se refera la vizibilitatea formei. Daca se alege valoarea True, forma va fi vizibila n timpul executiei. Daca se alege valoarea False, forma va fi invizibila n timpul executiei. Proprietate Visible a unei forme poate primi valoarea True si prin intermediul metodelor Show si ShowModal.

Proprietatea WindowMenu De tip TMenuItem, este utilizata numai n cazul formelor MDI parinte (al caror stil este fsMDIForm). Cu ajutorul acestei proprietat se desemneaza un element de meniu din linia meniului principal, la care sistemul Delphi va adauga automat meniul Window (lista ferestrelor copil deschise n fereastra parinte, cu indicarea ferestrei active). Proprietatea WindowState Se refera la modul de afisare pe ecran a formei. Valorile posibile ale acestei proprietati sunt urmatoarele: Valoare wsNormal wsMinimized wsMaximized Semnificatie Forma este afisata n stare normala; nici minimizata, nici maximizata. Valoare implicita. Forma este afisata n stare minimizata. Forma este afisata n stare maximizata.

Evenimentele asociate formelor Evenimentul OnActivate

Acest eveniment apare n momentul n care o forma ajunge n focar (De exemplu, utilizatorul lucreaza simultan cu mai multe forme si efectuiaza un click de mouse pe una dintre ele, ceea ce determina ajungerea respectivei forme n focar). n cazul n care proiectul contine o singura forma, n momentul lansarii n executie a proiectului forma respectiva va fi automat activata. Proceduta atasata acestui eveniment are urmatorul prototip:

procedure TForm1.FormActivate(Sender: TObject); begin : end;

De observat faptul ca, n cazul ferestrelor a caror proprietate FormStyle are valoarea fsMDIChild , evenimentulonActivate apare numai atunci cnd focarul este transferat dintr-o fereastra copil ntr-o alta fereastra copil.

Evenimentul OnClick
Se produce atunci cnd utilizatorul unui program efectuiaza un click de mouse pe o zona libera a formei sau pe o componenta care n momentul respectiv este inhibata. Procedura atasata acestui eveniment are prototipul urmator: procedure TForm1.FormClick(Sender: TObject); begin : end;

Evenimentul OnDblClick Apare atunci cnd utilizatorul efectuiaza un dublu click de mouse pe o zona libera a formei sau pe o componenta care n momentul respectiv este inhibata. Procedura atasata acestui eveniment are prototipul urmator: procedure TForm1.FormDblClick(Sender: TObject); begin : end; Evenimentul OnCloseQuery Apare n momentul n care utilizatorul este autorul unei actiuni prin care semnaleaza faptul ca doreste sa nchida forma. Astfel de actiuni sunt: apelarea metodei Close, efectuarea unui click pe butonul de nchidere, efectuarea unui dublu click pe meniul sistem al formei sau apelarea comenzii Close din meniul sistem.

Procedura atasata acestui eveniment are urmatorul prototip: procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin : end; Daca n aceasta procedura i se atribuie parametrului variabil CanClose valoarea True, forma poate fi nchisa si n continuare se lanseaza n executie procedura atasata evenimentului OnClose. Daca variabile CanClose i se atribuie valoarea False, forma nu poate fi nchisa. Evenimentul OnClose Se produce n momentul n care utilizatorul a cerut nchiderea formei. El se declanseaza dupa evenimentul OnCloseQuery. Procedura atasata are prototipul:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin : end; Parametrul variabil Action stabileste daca forma trebuie sa fie ntr-adevar nchisa. Valorile posibile ale acestui parametru sunt urmatoarele: Valoare caNone caHide Semnificatie Nu se autorizeaza nchiderea ferestrei Forma nu este nchisa ci doar ascunsa. n continuare utilizatorul poate sa aiba acces la aceasta forma si poate sa ceara reafisarea formei cu metoda Show. Aceasta valoare este valoarea implicita n cazul formelor care au stil diferit de fsMDIChild. Forma este nchisa si memoria alocata formei este eliberata. Forma nu este nchisa, doar minimizata. Aceasta valoare este valoarea implicita n cazul formelor care au stilulfsMDIChild.

caFree caMinimize

n exemplul de mai jos se poate urmari un mod de tratare a celor doua evenimente. unit Unit1; interface uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure FormClose(Sender: TObject; var Action: TCloseAction); private

public

end; var Form1: TForm1; implementation procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if MessageDlg('Se inchide forma?', mtConfirmation, [mbOk, mbCancel], 0)=mrCancel then CanClose:=False else CanClose:=True; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin if MessageDlg('Se inchide forma(Y/N?', mtConfirmation, [mbYes, mbNo], 0)=mrYes then Action:=caFree else Action:=caNone;

end; end. Evenimentul OnCreate Apare n momentul n care se creeaza forma (adica la prima executie a formei). De regula se foloseste pentru initializarea proprietatilor formei si a componentelor asezate pe aceasta. Procedura atasata evenimentului OnCreateare urmatorul prototip: procedure Tform1.FormCreate(Sender: TObject); begin
:

end; De semnalat faptul ca n procesul de creare a unei forme, daca proprietatea de vizibilitate a acesteia (Visible) esteTrue, se vor declansa urmatoarele evenimente, n ordinea specificata mai jos: OnCreate OnShow OnActivate OnPaint Evenimentul OnDeactivate Apare n momentul n care forma urmeaza sa piarda focarul, altfel spus atunci cnd aplicatia foloseste mai multe forme si utilizatorul printr-un click de mouse activeaza alta forma. De mentionat faptul ca trecerea de la o aplicatie la alta (nu la o alta forma a aplicatiei curente) poate fi prelucrata prin evenimentul OnDeactivate atasat obiectelor de tipTapplication. Procedura atasata evenimentului OnDeactivate al formei are prototipul: procedure TForm1.FormDeactivate(Sender: TObject); begin
:

end; Evenimentul OnDestroy Apare n momentul n care se distruge forma actuala (adica se elibereaza toate resursele atasate formei). Procedura atasata acestui eveniment are prototipul urmator:

procedure TForm1.FormDestroy(Sender: TObject); begin : end; n aceasta procedura se vor distruge toate acele obiecte, care au fost create n metoda de tratare a evenimentuluiOnCreate. Evenimentul OnHide Apare n momentul n care forma este ascunsa, adica proprietatea de vizibilitate a formei Visible este initializata cu valoarea False. Procedura atasata acestui eveniment are urmatorul prototip: procedure TForm1.FormHide(Sender: TObject); begin : end;

Evenimentul OnShow Apare n momentul n care forma este afisata, adica proprietatea de vizibilitate a formei (Visible) este initializata cu valoarea True. Procedura atasata acestui eveniment are prototipul urmator. procedure TForm1.FormShow(Sender: TObject); begin
:

end; Evenimentul OnPaint Este declansat n momentul n care unele zone ale formei curente trebuie sa fie redesenate (de exemplu datorita faptului ca unele zone ale formei au fost acoperite temporar de alte ferestre). Procedura atasata acestui eveniment are prototipul urmator: procedure TForm1.FormPaint(Sender: TObject); begin
:

end;

Evenimentul OnResize Este declansat n momentul n care forma a fost redimensionata de utilizator. De regula n procedura aferenta acestui eveniment se va realiza reasezarea si redimensionarea componentelor asezate pe forma. Se mentioneaza faptul ca acest eveniment este declansat si n procesul de creare a formei. Procedura atasata acestui eveniment are prototipul: procedure TForm1.FormResize(Sender: TObject); begin
:

end;

Alte evenimente asociate formei vor fi prezentate n contexte n care este oportuna o discutie mai ampla si mai precisa asupra lor.

Fereastra de editare a codului n momentul initial, fereastra de editare a codului se afla n spatele ferestrei formei, fiind vizibila partea ei inferioara, deci poate fi activata oricnd printr-un click de mouise. n aceasta fereastra se introduce codul programului, care stabileste modul de tratare a diferitelor evenimente. Fereastra este un editor ASCII complet; pot fi deschise simultan mai multe ferestre de cod. Continutul lor este salvat n diferite unit-uri. Extensia fisierelor de unitati este ntotdeauna .PAS, prin care se semnaleaza faptul ca aceste fisiere contin un anumit cod scris n limbajul Object Pascal. Formatul acestor fisiere este ntotdeauna ASCII. La intrare n Delphi sau la crearea unui nou proiect, editorul de cod contine textul sursa aferent unitatii principale. Numele implicit al fisierului unitatii principale este Unit1.PAS si are urmatorul continut: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private

public

end; var Form1: TForm1; implementation end.

5.3 Cum se foloseste un mediu vizual de programare?


Dupa ce am vazut ce nseamna dezvoltarea rapida de aplicatii, dupa ce ne-am format o idee despre potentialul de asistare al mediului Delphi, dupa ce, n sfrsit, am nteles cte ceva despre suportul oferit de Object Pascal pentru a realiza sisteme soft, merita si chiar cred ca este folositor sa vedem, din perspectiva pragmatica, cum se foloseste un mediu vizual de programare. Cu referire directa la Delphi, am putea sa luam n considerare urmatoarele: 1. Realizarea interfetei cu utilizatorul este simplificata enorm, ndeosebi daca tipul de interfata este aliniat la standardele aplicatiilor Windows. Asadar, programatorul poate sa investeasca timpul consumat, altfel, pentru realizarea interfetei, n activitati de modelare a solutiei, de optimizare a codului, etc. 2. Mare parte din problema gestiunii evenimentelor recunoscute de o aplicatie este rezolvata cu suport consistent din partea mediului. n procesul de proiectare, forma sau formele care compun o aplicatie este/sunt populate de diferite componente care au un comportament predefinit dar au si deschidere catre disponibilitati comportamentale specifice unei aplicatii anume. n aceasta privinta succesul n utilizarea unui mediu vizual de programare depinde de gradul de cunoastere a comportamentului implicit al componentelor. Necunoasterea acestui comportament genereaza reinventarea rotii sau dificultati deosebite n rezolvarea chiar si a unor probleme marunte. De retinut ca programatorul n stil clasic trebuie sa lupte cu obisnuinta de a controla tot ce misca ntr-un program daca s-a hotart sa lucreze ntr-un mediu vizual de programare. 3. Odata adaugate elementele grafice ale interfetei aplicatiei cu utilizatorul, programatorul trebuie sa adauge cod pentru a da raspunsuri evenimentelor specifice ale aplicatiei. n Delphi acest cod seamana att de bine cu codul Pascal inct orice programator cu abilitati n scrierea de cod Pascal devine rapid un aprogramator abil n Delphi daca rezolva, tot rapid, niste probleme de mentalitate formata n Pascalul clasic. Este vorba despre obiect orientare si de o serie de noutati n materie de sintaxa n zona obiect orientata, cu predilectie. 4. Am lasat la urma, dar, poate ca aceasta problema trebuie rezolvata prima,

chiar si ntr-un mediu vizual de programare, nainte de a ne repezi n tastatura, trebuie sa vedem ct de clare sunt o serie de probleme referitoare la: -cerintele fata de aplicatie; -structura interfetei; -tipul de modularizare ales; -structura algoritmilor critici folositi. Alinierea la paradigma RAD ne mai atrage atentia si asupra altor aspecte demne de luat n seama, nainte de a porni voiniceste la scris de cod DELPHI.

S-ar putea să vă placă și