Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Dezvoltarea rapida de aplicatii in Delphi

Informatica


Dezvoltarea rapida de aplicatii în Delphi

5.1 Introducere



Unii specialisti considera Delphi ca fiind versiunea RAD (Rapid Application Development) a mediului de programare Borland Pascal. Unul dintre primele lucruri care trebuie întelese când 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 mâinile 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, strâns legata în ingineria softului de ideea de prototipizare.

RELAŢIA 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 pâna când 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 utilizând instrumente pentru dezvoltarea rapida a sistemelor soft (medii vizuale de proiectare, medii vizuale de programare, etc.).

Când 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 sfârsit, 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 utilizând 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 având 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 cât 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, pâna când 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 curând decât 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 INŢIERE Î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 stânga.

Nr. crt.

Nume accelerator

Descriere.

Open Project

Deschide un proiect existent.

Echivalenta cu comanda File / Open

Save all

Salveaza toate elementele proiectului actual.

Echivalenta cu comanda File / Save All

Add file to project

Adaugarea unui fisier la proiect.

Echivalenta cu comanda File / Add to project

Select unit from list

Selectarea unui unit din lista.

Echivalenta cu comanda View / Units (Ctrl+F12)

Select form from list

Selectare unei forme din lista.

Echivalenta cu comanda View / Forms (Shift+F12)

Run

Compilarea si lansarea în executie a aplicatiei.

Echivalenta cu comanda Run / Run (F9)

Pause

Pauza temporara în executia programului.

Echivalenta cu comanda Run / Program Pause

Open File

Încarcare proiect, forma, unitate sau fisier text în editorul de coduri.

Echivalenta cu comanda File / Open.

Save File

Salvarea modificarilor efectuate în fisierele incluse în proiect.

Echivalenta cu comanda File / Save (Ctrl+S).

Remove file from project

stergerea unui unit din proiectul curent.

Echivalenta cu comanda File / Remove from project.

Toggle Form/Unit

Comutare între forma si unit-ul asociat.

Echivalenta cu comanda View/Toggle Form/Unit (F12).

New form

Crearea unei forme vide si a unei noi unitati si adaugarea lor la proiectul curent.

Echivalenta cu comanda File / New Form.

Trace into

Executia pas cu pas a programului (inclusiv instructiunile continute în subprograme).



Echivalenta cu comanda Run/Trace into (F7).

Step over

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, câmpuri 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 câteva 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 câteva 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, StoredProc si 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 rândul ei, pagina Properties este prevazuta cu doua coloane. În coloana din stânga 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 cuvânt, 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 când 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 atât prin intermediul inspectorului de obiecte, în faza de proiectare, cât 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 si VertScrollBar.

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

Semnificatie

biSystemMenu

Forma este prevazuta cu meniul sistem

biMinimize

Forma este prevazuta cu un buton de minimizare

biMaximize

Forma este prevazuta cu un buton de maximizare

biHelp

Daca proprietatea BorderStyle contine valoarea bsDialog sau daca sunt excluse valorile biMinimize si biMaximize, 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

Semnificatie

bsDialog

Chenar neredimensionabil; chenarul standard al ferestrelor de dialog.

bsSingle

Chenar neredimensionabil, desenat cu o linie simpla

bsNone

Chenar neredimensionabil, desenat cu linie invizibila

bsSizeable

Chenar redimensionabil standard

bsToolWindows

Similar cu bsSingle, dar este prevazut cu un mic titlu

bsSizeToolWin

Similar cu bsSizeable, dar este prevazut cu un mic titlu

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.

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

Semnificatie

fsNormal

Forma creaza o fereastra normala (nici MDI copil, nici MDI parinte). Valoare implicita.

fsMDIChild

Forma creeaza o fereastra MDI copil.

fsMDIForm

Forma creeaza o fereastra MDI parinte.

fsStayOnTop

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 când cursorul de mouse este asezat deasupra unei forme sau componente. Acest text este afisat numai atunci când 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

Descriere

Increment

(O valoare cuprinsa între 1 si 32767, valoarea implicita este 8)

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

(De tip word, valoarea implicita 0)

Stabileste momentul de afisare a barei de defilare.

Aceasta proprietate determina numarul minim de puncte care separa componentele formei si muchia formei. În executie, daca o componenta ajunge sa fie la o distanta mai mica decât Margin puncte de la muchie si daca proprietatea Visible este setata la True, atunci se afiseaza o bara de defilare.

Position

(De tip integer, valoarea implicita 0)

Comunica pozitia curenta a cursorului glisat al barei de defilare. Valoarea acestei proprietati este actualizata automat, în timpul executiei aplicatiei.

Range

(De tip integer, valoarea implicita 0)

Dimensiunea maxima de defilare, exprimata în puncte. La bara de defilare verticala aceasta valoare trebuie sa fie mai mare decât valoarea proprietatii Height (în caz contrar, bara verticala este invizibila). La bara de defilare orizontala aceasta valoare trebuie sa fie mai mare decât valoarea proprietatii ClientWidth (În caz contrar, bara orizontala este invizibila).

Tracking

(De tip boolean, valoarea implicita false)

Daca se alege valoarea True, imaginea / componenta din forma se deplaseaza împreuna cu butonul de glisare tras de utilizator. Daca se alege valoarea False, imaginea ramâne statica cât timp utilizatorul trage butonul de glisare, adica actualizarea imaginii defilate are loc numai în momentul eliberarii butonului glisant al barei de defilare.

Visible

(De tip boolean, valoare implicita True)

Se refera la vizibilitatea barei de defilare. Daca se alege valoarea True si daca componenta se afla la o distanta mai mica decât Margin puncte de muchia formei, atunci bara de defilare devine vizibila.

Proprietatea Icon

Specifica simbolul grafic care va fi utilizat când 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 stânga sus al ecranului;

-componentei fata de coltul stânga sus al formei proprietar;

-componentei fata de coltul stânga 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 MainMenu asezata 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 putând 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 valoarea True , 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

Semnificatie

poDesigned

Dimensiunea si pozitia formei în executie coincid cu dimensiunea si pozitia formei utilizata în timpul proiectarii. Valoare implicita.

poDefault

Nu se conserva nici dimensiunea, nici pozitia initiala a formei; noile valori sunt determinate de sistemul Delphi.

poDefaultPosOnly

În executie va fi conservata dimensiunea formei, însa pozitia acesteia va fi stabilita de sistemul Delphi.

poDefaultSizeOnly

În executie va fi conservata pozitia formei, însa dimensiunea acesteia va fi stabilita de sistemul Delphi.

poScreenCenter

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

Semnificatie

poNone

Nu se face nici o scalare speciala, astfel încât forma tiparita la imprimanta poate sa se deosebeasa de forma afisata pe ecran

poProportional

Se va utiliza o scala prin care dimensiunea formei tiparite va fi aprozimativ egala cu dimensiunea formei afisate pe ecran (WYSIWYG). Valoare implicita.

poPrintToFit

Forma este tiparita în asa fel încât se conserva proportiile afisate pe ecran, dar dimensiunea de tiparire este determinata în asa fel încât 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 atât în cazul formelor cât si în cazul componentelor. Cu ajutorul acestei proprietati, se poate adauga o valoare formelor sau componentelor. Aceasta proprietate nu are o semnificatie predefinita, putând fi utilizata în diverse scopuri de catre programatori. Prezentam , în continuare un exemplu de utilizare a proprietatii Tag.

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

Semnificatie

wsNormal

Forma este afisata în stare normala; nici minimizata, nici maximizata. Valoare implicita.

wsMinimized

Forma este afisata în stare minimizata.

wsMaximized

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 , evenimentul onActivate apare numai atunci când focarul este transferat dintr-o fereastra copil într-o alta fereastra copil.

Evenimentul OnClick

Se produce atunci când 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 când 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

Semnificatie

caNone

Nu se autorizeaza închiderea ferestrei

caHide

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.

caFree

Forma este închisa si memoria alocata formei este eliberata.

caMinimize

Forma nu este închisa, doar minimizata. Aceasta valoare este valoarea implicita în cazul formelor care au stilul fsMDIChild.

Î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 OnCreate are 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) este True, 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 când 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 tip Tapplication.

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 evenimentului OnCreate.

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 oricând 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 sfârsit, am înteles câte 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.
  1. 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 hotarât sa lucreze într-un mediu vizual de programare.

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 atât de bine cu codul Pascal incât 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.

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 cât 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.




Document Info


Accesari: 4296
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2025 )