Sunteți pe pagina 1din 34

Utilizare Delphi 5

autor Popa Daniel

1.Introducere
Lucrarea este destinat celor care doresc s dezvolte aplicaii Windows utiliznd mediul de programare Delphi. Am ales Delphi-ul deoarece este uor de nvat, fiind foarte asemntor cu limbajul Pascal care este predat n liceu. Un alt motiv pentru care am ales mediul Delphi este c n urma compilrii programelor se obin executabile mici ce ruleaz rapid i nu necesit librrii ca s poat rula(un program similar scris n Visual Basic necesit cca. 5 Megabytes de librrii). Pentru a putea nelege i folosi acest manual este necesar ca utilizatorul s cunoasc bine limbajul Pascal, deoarece Delphi-ul este practic limbajul Pascal orientat pe obiect. Cu toate c Delphi-ul este un limbaj orientat pe obiect nu este necesar cunoaterea principiilor programrii ntr-un astfel de limbaj pentru realizarea unor programe simple. Dac se dorete realizarea unor componente pentru Delphi sau modificarea unora dintre cele existente atunci este necesar cunoaterea principiilor programrii ntr-un limbaj orientat pe obiect. Am ales pentru prezentare Delphi 5 Enterprise Edition deoarece este varianta cea mai complet, celelalte variante :Professional Edition, Standard Edition fiind variante prescurtate, care nu conin toate facilitile variantei Enterprise. Resursele necesare instalrii i rulrii Delphi-ului sunt: CPU - Pentium 90 MHz, recomandabil 166 MHz Windows 9x/Me, 2000, NT4 cu Service Pack 3 sau mai nou Memorie 32 Mb RAM, recomandabil 64 Mb HDD - 80 Mb (instalare minim), recomandabil 250 Mb Monitor VGA, recomandabil SVGA cu o rezoluie de 800x600 Mouse CD-ROM

Utilizare Delphi 5

autor Popa Daniel

2. Prezentarea mediului DELPHI 5


La pornirea Delphi-ului acesta va arta ca n figura de mai jos:

Bara de meniuri

Bare butoane

Paleta de componente

Pagini ale paletei de componente

Inspectorul de obiecte

Fereastra proiectului nou nceput

Din bara de meniuri pot fi accesate meniurile Delphi-ului, bara de butoane permind accesul rapid la principalele comenzi. Paleta de comenzi permite accesul rapid la cele peste 200 de componente ale mediului Delphi. Pentru o mai bun gestionare a componentelor acestea sunt mprite pe mai multe pagini, existnd i posibilitatea adugrii unor pagini noi i a unor componente noi. n partea stng a imaginii poate fi observat inspectorul de obiecte (object inspector) cu ajutorul cruia pot fi modificate proprietile obiectelor(Properties) i pot fi stabilite ce rutine (proceduri) vor fi executate n momentul apariiei unor evenimente(Events).

Utilizare Delphi 5

autor Popa Daniel

2.1 Principalele meniuri i comenzi(bara de meniuri)


Meniul File Se utilizeaz a deschide, salva, nchide, tipri proiecte sau fiiere noi sau existente, pentru adugarea unor noi ferestre(form) sau uniti de program(unit) proiectului deschis n meniu putem gsi urmtoarele opiuni: New deschide o fereastr de dialog de unde putem alege ce obiect dorim s crem, sau putem selecta un vrjitor (wizard) care s ne ajute la crearea unui nou obiect. New Application creeaz un nou proiect care conine o fereastr goal, un unit i un fiier de proiect. New Form creeaz o fereastr goal i o adaug proiectului curent New Frame creeaz un nou frame (fereastr invizibil destinat componentelor nevizuale aflate n proiect, se utilizeaz pentru o mai bun gestiune a componentelor folosite n cadrul proiectului) pentru proiectul curent Open deschide o fereastr de dialog pentru ncrcarea unui proiect, fereastr, unit sau fiier text. Open Project deschide o fereastr de dialog pentru ncrcarea unui proiect existent ( fiiere cu extensia BPR sau BPK) Reopen deschide un meniu care conine cele mai noi proiecte sau module utilizate Save salveaz fiierul curent Save As salveaz fiierul curent utiliznd un nume nou Save Project As salveaz proiectul curent cu un nume nou Save All salveaz toate fiierele deschise Close nchide proiectul curent i toate fiierele asociate Close All nchide toate fiierele deschise Use Unit adaug unit-ul selectat la clauza uses a modulului activ Print tiprete fiierul curent Exit nchide proiectul i prsete mediul Delphi Meniul Edit Se utilizeaz pentru a manipula text sau componente n timpul crerii programului. n meniu pot fi gsite urmtoarele opiuni: Undo/Undelete anuleaz ultima aciune sau tergere Redo anuleaz ultima operaie de undo Cut mut obiectul selectat n Clipboard Copy copiaz obiectul selectat n Clipboard Paste copiaz coninutul Clipboard-ului la poziia cursorului Delete terge obiectul selectat Select All selecteaz toate componentele de pe fereastr (form) Align to Grid Aliniaz componentele selectate la cel mai apropiat punct din gril Bring to Front mut componenta selectat n fa Send to Back mut componenta selectat n spate Align aliniaz componentele Size redimensioneaz componentele selectate Scale redimensioneaz proporional toate componentele din fereastr Tab Order modific ordinea n care se sare apsnd tasta Tab Creation Order modific ordinea n care sunt create componentele nevizuale

Utilizare Delphi 5

autor Popa Daniel

Flip Children mut obiecte n oglind e util pentru cazul n care nu se citete de la stnga la dreapta ci invers Lock Controls Secures nepenete toate componentele n poziiile curente Add to interface definete o nou metod, un nou eveniment, o nou proprietate pentru o component ActiveX

Meniul Search Meniul se utilizeaz pentru a cuta text, obiecte, erori, unit-uri, variabile i simboluri n editorul de cod(fereastra n care se editeaz codul). n acest meniu putem gsi opiunile: Find caut un text specificat i marcheaz prima apariie a acestuia n editorul de cod Find in Files caut textul specificat i afieaz fiecare potrivire n fereastra aflat sub editorul de cod Replace caut textul specificat i-l nlocuiee cu un altul Search Again repet ultima cutare Incremental Search caut textul pe msur ce este scris Go to Line Number mut cursorul la linia specificat Find Error caut ultima eroare de rulare Browse Symbol caut dup un anumit simbol Meniul View Se utilizeaz pentru a afia sau ascunde diverse elemente ale mediului Delphi. n meniu putem gsi urmtoarele opiuni: Project Manager afieaz managerul de proiect, acesta poate fi utilizat pentru a naviga prin fiierele proiectului, pentru a le copia, terge, aduga, salva. Translation Manager afieaz managerul pentru traduceri Object Inspector afieaz inspectorul de obiecte To-Do List face vizibil lista cu ceea ce trebuie fcut n proiect Alignment Palette afieaz o fereastr n care se gsesc opiuni destinate alinierii obiectelor Browser afieaz o fereastr n care pot fi vizualizate unit-urile i clasele utilizate n proiect Code Explorer face vizibil editorul de cod Component List afieaz o list cu toate componentele Delphi-ului Window List face vizibil o list cu toate ferestrele Delphi-ului care sunt deschise Debug Windows afieaz un meniu din care pot fi alese ce ferestre pentru depanarea programului vor fi afiate (puncte de ntrerupere, apeluri ale subprogramelor, variabile, fire de execuie, module, CPU, FPU ) Desktops permite afiarea, salvarea sau tergerea diverselor moduri de aezare a ferestrelor Toggle Form/Unit comut ntre fereastr i unit-ul corespunztoe Units afieaz o list cu toate unit-urile proiectului Forms afieaz o list cu toate ferestrele(form) existente n proiect Type Library afieaz editorul pentru librrii de tipuri (Type Library), util pentru a crea tipuri de informaii pentru controale ActiveX, obiecte MTS i alte obiecte COM New Edit Window deschide nc un editor de cod Toolbars deschide un meniu din care pot fi selectate ce bare de butoane vor fi afiate

Utilizare Delphi 5

autor Popa Daniel

Meniul Project Este utilizat pentru a compila o aplicaie. Pentru ca opiunile din meniu s poat fi folosite e necesar s fie deschis un proiect. n meniu avem urmtoarele comenzi: Add to Project adaug un fiier proiectului Remove from Project elimin un fiier din proiect Import Type Library afieaz o list cu librriile de tipuri nregistrate n sistem pentru a fi adugate la proiect. Add to Repository adaug proiectul la lista de obiecte ce pot fi create, din meniul File opiunea New. View Source afieaz sursele proiectului n editorul de cod Languages permite adugarea, eliminarea sau rennoirea DLL-urilor pentru limb Add New Project adaug la proiect o nou aplicaie, un nou DLL Add New Project adaug la proiect un altul existent Compile project compileaz doar acele fiiere care au fost modificate de la ultima compilare Build project compileaz toate modulele proiectului Syntax Check project verific sintactic toate modulele proiectului Information for project afieaz informaii despre proiectul compilat (nr. de linii, dimensiunea programului rezultat ) Compile All Projects compileaz toate fiierele care au fost modificate de la ultima compilare n toate proiectele din grupul de proiecte Build All Projects compileaz toate fiierele n toate proiectele din grupul de proiecte Web Deployment Option se utilizeaz pentru a configura controalele ActiveX sau ActiveForm n vederea adugrii lor la serverul web. Web deploy adaug controalele ActiveX sau ActiveForm, dup configurarea acestora Options afieaz o fereastr de dialog n care se modific opiunile pentru compilare, linkeditare etc. Meniul Run Meniul permite depanarea programelor. n acest meniu se afl urmtoarele opiuni: Run compileaz i execut aplicaia Attach to Process afieaz o list cu procesele care pot fi depanate Parameters de aici se pot specifica: parametrii cu care va fi lansat n execuie aplicaia, executabilul corespunztor unu DLL, un calculator pentru depanarea la distan Register ActiveX Server adaug o intrare n regitrii Windows-ului pentru controlul ActiveX , e valabil comanda atunci cnd avem un proiect ActiveX. Unregister ActiveX Server terge intrarea n regitrii Windows-ului pentru controlul ActiveX , e valabil comanda atunci cnd avem un proiect ActiveX. Install MTS Object Instaleaz obiectele MTS din proiect ntr-um pachet MTS, comand valabil doar dac proiectul curent este un obiect MTS(Microsoft transaction server) Step over execut un program linie cu linie, srind peste proceduri, tratndu-le ca fiind o singur instruciune Trace Into execut un program linie cu linie, intrnd n proceduri

Utilizare Delphi 5

autor Popa Daniel

Trace to Next Source execut un program, oprindu-se la urmtoarea linie executabil din program Run To Cursor Execut programul curent pn la poziia cursorului din editorul de cod Run Until Return execut procesul pn la ieirea din funcia curent Show Execution Point poziioneaz cursorul la linia care se execut Program Pause oprete temporar execuia programului ce ruleaz Program Reset termin execuia programului ce ruleaz i elibereaz memoria ocupat de ctre acesta Inspect deschide o fereastr n care putem scrie numele variabilei ce se inspecteaz Evaluate/Modify afieaz o fereastr n care putem evalua sau modifica valoarea unei expresii. Add Watch afieaz o fereastr n care putem scrie mai multe variabile a cror valori dorim s le urmrim Add Breakpoint afieaz un meniu din care putem aduga, modifica puncte de ntrerupere

Meniul Component Din acest meniu se pot gestiona componentele instalate. Opiunile acestui meniu sunt: New Component deschide o fereastr cu ajutorul creia se pot crea noi componente Install Component instaleaz o nou component existent Import ActiveX Control adaug o librrie de tipuri de controale ActiveX Create Component Template salveaz componente modificate ca abloane cu un nou nume, o nou icoan, pe o nou pagin Install Packages instaleaz un pachet de componente Configure Palette deschide o fereastr din care se poate configura paleta de componente, se pot terge, ascunde, muta componente dintr-o pagin n alta Meniul Database Din acest meniu se pot crea, modifica, urmri i vizualiza bazele de date. Meniul conine urmtoarele opiuni: Explore lanseaz n execuie Database Explorer sau SQL Explorer, cu ajutorul crora se pot crea i manipula baze de date SQL Monitor lanseaz SQL Monitor cu ajutorul cruia se pot urmri alocarea resurselor i starea comenzilor date prin SQL Links Form Wizard se utilizeaz pentru crearea rapid a unor ferestre de vizualizare a bazelor de date Meniul Tools Meniul tools se utilizeaz pentru: - A vizualiza sau modifica configuraia mediului de programare - A vizualiza sau modifica configuraia depanatorului - A modifica obiectele ce pot fi create cu Delphi-ul - A modifica lista programelor ce apar n acest meniu - A crea sau modifica tabele ale bazelor de date - A crea sau modifica pachete de componente - A crea sau modifica imagini

Utilizare Delphi 5

autor Popa Daniel

n acest meniu putem avea: Enviroment Options specific configuraia dorit, cile ctre librrii, paleta de componente Editor Options de aici se configureaz editorul de cod (culori, taste rapide, indentri etc) Debugger Option configurare program de depanare Repository gestioneaz modul de organizare a obiectelor ce pot fi create cu opiunea New din meniul File Translation Repository afieaz translation repository, cu care por fi fcute traduceri Configure Tools cu ajutorul aceste opiuni pot fi adugate, terse sau modificate opiuni ce apar n acest meniu Unelte opionale: Database Desktop lanseaz un utilitar cu ajutorul cruia putem crea, vizualiza, sorta, modifica i interoga baze de date. Package Collection Editor editor de pachete Image Editor lanseaz un utilitar cu ajutorul cruia putem edita fiiere de resurse, icoane, bitmap-uri i cursoare care s fie folosite n aplicaii Team Source lanseaz un program destinat gestionrii unor proiecte dezvoltate de ctre grupuri de programatori. Meniul Help Se utilizeaz pentru a accesa help-ul sistemului. n acest meniu putem gsi urmtoarele opiuni: Delphi Help deschide help-ul Delphi-ului Delphi Tools deschide help-ul destinat uneltelor din Delphi. Windows API/SDK Help deschide help-ul pentru apelurile API Windows Borland Home Page salt la pagina web a Borland-ului (Inprise-ului) Delphi Home Page salt la pagina web a Delphi-ului Delphi Developer Support salt la pagina web destinat programatorilor Delphi Direct legtur direct ctre pagina Delphi-ului Customize permite gestionarea help-ului About informaii despre copyright i versiune

2.2 Bara de butoane


Pe bara de butoane se afl scurtturi ctre cele mai utilizate comenzi. Open project New Open Reopen Save Save all Remove from project Help

Add to project

Units Forms Toggle New form

Run 7

Pause

Trace into Step over

Utilizare Delphi 5

autor Popa Daniel

2.3 Paleta de componente

Paleta de componente a Delphi-ului este mprit n mai multe pagini, n interiorul fiecrei pagini existnd un numr variabil de componente. Structura paginilor poate fi schimbat, utilizatorul avnd posibilitatea s creeze pagini noi, componente noi, poate s tearg componente sau poate s le reordoneze. Pentru a obine informaii generale despre pagina activ utilizatorul poate apsa tasta F1. Dac o component este selectat n momentul apsrii tastei F1 atunci vor fi afiate informaii despre componenta respectiv. Componentele pot s fie: Vizibile - componenta este vizibil, sau poate fi fcut vizibil n timpul rulrii programului, spre exemplu butoanele Invizibile componenta apare sub forma unei imagini la scrierea programului, dar n timpul rulrii nu e vizibil, spre exemplu timer-ul Fiecare component are anumite atribute cu ajutorul crora controlam aplicaia : Proprietile(properties) ne permit accesul la metodele sau cmpurile unei clase. Metode(methods) proceduri i funcii asociate unui obiect Evenimentele(events) sunt aciuni ale utilizatorului, ex. apsarea unui buton, sau ale sistemului de operare recunoscute de ctre component. Fiecare component are o list de evenimente pe care le recunoate i la care poate rspunde. Exist posibilitatea de a asocia un cod care s se execute fiecrui eveniment. n tabelul de mai jos sunt prezentate paginile paletei de componente, precum i o descriere scurt a coninutului fiecrei pagini. Descriere Nume Controale standard: butoane, meniuri, etichete Standard Controale specializate: butoane ce pot conine imagini, liste derulante Additional Controale pentru Windows9x/NT: calendar, bare de stare, Win32 Componente i controale destinate lucrului cu sistemul: timer, media player System Componente invizibile cu ajutorul crora se poate realiza conectarea la Data Access diferite baze de date utiliznd Borland Database Engine (BDE) Data Controls Componente vizuale destinate accesului(vizualizare, tergere, modificare, adugare date) la bazele de date Componente ce permit conectarea la baze de date folosind ActiveX Data ADO Objects (ADO) Componente ce permit conectarea la un server Interbase fr BDE sau ADO Interbase Componentele din aceast pagin permit lucrul cu baze de date distribuite Midas InternetExpress Componentele din aceast pagin permit construirea de aplicaii InternetExpress care sunt simultan aplicaii Web Server i clieni pentru baze de date distribuite Suport pentru crearea aplicaiilor pentru Internet Internet Ofer o varietate de protocoale de acces la Internet FastNet Decision Cube Componente care vizualizeaz datele din bazele de date ajutnd la luarea deciziilor Componente ce ajut la crearea unor rapoarte Quick Report Componente pentru compatibilitatea napoi cu Delphi 1 (a nu se folosi) Win3.1 Exemple de componente (sursele lor se gsesc: Delphi5\source\samples) Samples Componente model de tip ActiveX ActiveX Componente destinate accesului la diferite servere Servers

Utilizare Delphi 5

autor Popa Daniel

2.4 Inspectorul de obiecte (object inspector)


Inspectorul de obiecte este utilizat pentru a modifica proprietile obiectelor i a scrie rutinele de tratare a evenimentelor. Acesta este prevzut cu dou pagini: Properties care permite stabilirea proprietilor obiectelor Events destinat gestionrii evenimentelor legate de componente. Pagina Properties Este prevzut cu dou coloane: - pe coloana stng sunt listate denumirile proprietilor - pe coloana dreapt avem valorile actuale ale acestora Atribuirea unei valori se poate face n trei moduri: - prin linia de editare aferent proprietii(ex. Caption) - prin list derulant(ex. BorderStyle) - prin intermediul unei ferestre de dialog(ex. Font) Anumite proprieti (ex. Color) admit dou modaliti de atribuire a unei valori, prin list derulant, sau dac se d dublu clic, prin fereastr de dialog. La unele proprieti (ex. BorderIcons, Constrains) numele este precedat de un semn plus. n aceste cazuri proprietatea respectiv desemneaz o list de proprieti. Pagina Events Este prevzut cu dou coloane: - pe coloana stng sunt listate denumirile evenimentelor - pe coloana dreapt avem procedurile ce trateaz evenimentele Atribuirea unei valori se poate face n dou moduri: - prin linia de editare, se d dublu clic pe coloana din dreapta, corespunztoare evenimentului pe care dorim s-l tratm, iar Delphi-ul deschide editorul de cod i ne permite scrierea codului ce se dorete a fi executat la apariia evenimentului respectiv. Antetul procedurii(metodei) de tratare a evenimentului este scris automat de ctre editor. Dac procedura aferent unui eveniment nu conine nici o linie de cod aceasta va fi tears. - prin list derulant, din care se poate alege o procedur care a fost definit de programator anterior, dac de dorete s se execute aceeai rutin pentru mai multe evenimente.

Utilizare Delphi 5

autor Popa Daniel

3. Gestiunea componentelor
3.1 Aezarea componentelor pe o form(form)
Pentru a aeza o component se poate proceda astfel: - Se efectueaz un clic de mouse pe simbolul grafic al componentei - Se efectueaz un clic n poziia n care se dorete plasarea colului stnga sus a componentei. O alt posibilitate de a aeza o component, dar de aceast dat n centrul ferestrei este de a da dublu clic pe aceasta. Dac se dorete adugarea mai multor componente identice atunci se procedeaz astfel: - Se apas tasta SHIFT - Se efectueaz clic pe simbolul grafic al componentei dorite, dup ace se poate elibera tasta SHIFT - Se poziioneaz obiectul n poziiile dorite - Pentru revenirea la normal se va efectua un clic pe simbolul sgeii, aflat n partea din stnga a paginii cu componente. Delphi-ul conine i anumite componente destinate gruprii mai multor componente: GroupBox, RadioGroup i Panel. Aceste componente container permit gestionare mai uoar a componentelor coninute: se pot muta simultan, pot fi modificate anumite proprieti simultan(font, culoare)

3.2 Manipularea componentelor aezate


Operaiile se pot executa asupra unei componente doar dac aceasta este selectat. Putem selecta o component n mai multe moduri: - Se efectueaz clic n interiorul componentei - Se alege obiectul din lista derulant a inspectorului de obiecte - Dac focarul este pe fereastr se poate trece de la o component la alta cu tasta TAB n anumite cazuri este necesar realizarea unei operaii asupra mai multor componente. Pentru aceasta este necesar selectarea obiectelor asupra crora se va efectua operaia. Putem selecta un grup de obiecte n dou moduri: - Cu tasta SHIFT apsat executm clic pe fiecare din componentele dorite - Realizm un dreptunghi imaginar prin apsarea butonului stng al mouse-ului i micarea acestuia astfel nct s cuprindem n interiorul dreptunghiului componentele dorite. Dac de dorete selectarea tuturor obiectelor se poate alege opiunea Select All din meniul Edit. Asupra obiectelor selectate se pot aplica comenzile(ce se gsesc n meniul Edit): Cut mut obiectele selectate n clipboard Copy copiaz obiectele selectate n clipboard Paste copiaz din clipboard Delete terge obiectele selectate Align to Grid aliniaz toate componentele la cele mai apropiate puncte de reea Bring to Front deplaseaz componentele selectate n faa celorlalte componente Send to back deplaseaz componentele selectate n spatele celorlalte componente Align afieaz o fereastr de dialog cu ajutorul creia un grup de componente pot fi aliniate (dup cea mai din stnga, cea mai din dreapta, cea mai de sus ) Size afieaz o fereastr de dialog cu ajutorul creia se pot redimensiona componentele selectate(la dimensiunea celei mai mari, celei mai mici componente ) Scale se pot scala (mri sau micora)procentual componentele selectate 10

Utilizare Delphi 5

autor Popa Daniel

Tab Order afieaz o fereastr de dialog cu ajutorul creia putem schimba ordinea de parcurgere a componentelor, acesta se parcurg n ordine cu Tab sau cu Shift+Tab n ordine invers Creation Order afieaz o fereastr de dialog din care putem schimba ordinea de creare a obiectelor Lock blocheaz/deblocheaz o component Comenzile Align to Grid, Bring to Front, Send to Back, Align, Size, Scale, Tab Order, Creation Order mai pot fi gsite i n meniul care apare dac executm clic dreapta pe un obiect. Dac se dorete se poate face vizibil o palet de comenzi destinate alinierii obiectelor( meniul View opiunea Alingment Palette).

11

Utilizare Delphi 5

autor Popa Daniel

4 Programarea n Delphi
4.1 Lecia 1 Programarea orientat pe obiect (OOP)
Noiunea de obiect. Caracteristici. Ideea OOP este de a pune la un loc, ntr-un singur container, att datele ct i partea de cod(proceduri i funcii, care poart denumirea de metode) . Containerul se numete obiect. Obiectul relev utilizatorului (programatorului care utilizeaz obiectul) doar ceea ce este necesar, astfel nct utilizarea obiectului s fie ct mai uoar. Toate mecanismele interne pe care utilizatorul nu are nevoie s le cunoasc sunt ascunse. OOP permite o abordare modular a programrii, ceea ce ne ferete de necesitatea rescrierii unor pri de cod. O alt caracteristic important a obiectelor este motenirea. Prin motenire se nelege acea proprietate a obiectelor prin care un obiect nou construit preia datele i metodele unui alt obiect, printe. Aceast caracteristic ne permite scrierea rapid i uoar a unor obiecte asemntoare, care au unele date i metode comune. Se poate ntmpla ca anumite metode a unei clase s fie rescrise, astfel nct, chiar dac o clas descendent are metode cu acelai nume, s fac cu totul altceva. Aceast caracteristic poart denumirea de polimorfism. Noiunea de clas. Caracteristici. O clas sau un tip de clas definesc o structur ce conine cmpuri, metode i proprieti. Instana unui tip de clas poart denumirea de obiect1. Un cmp este de fapt o variabil care face parte dintr-un obiect. La fel ca i cmpurile unui record, cmpul unei clase reprezint o dat care exist n fiecare instan a unei clase. O metod este o procedur sau o funcie asociat cu o clas. Majoritatea metodelor opereaz asupra obiectelor, care sunt instane ale claselor. O proprietate este o interfa pentru data asociat unui obiect(dat care de obicei este stocat ntr-un cmp). Proprietile au specificatori de acces care determin modul n care datele pot fi citite sau modificate. Din program, din afara obiectului, o proprietate apare cel mai adesea la fel ca un cmp. Pentru obiecte se aloc dinamic blocuri de memorie a cror structur este determinat de tipul de clas. Fiecare obiect are o copie unic a fiecrui cmp definit n clas, dar toate instanele unei clase mpart aceleai metode. Obiectele sunt create i distruse cu ajutorul unor metode speciale numite constructori i destructori. Constructorul este o metod utilizat pentru crearea unei instane a unei clase. Are rolul de a iniializa unele cmpuri, de a aloca memorie, sau a face tot ceea ce este necesar iniializrii obiectului. Nu este obligatoriu s definim un constructor, dac acesta nu a fost definit se utilizeaz constructorul implicit Create. Destructorul este o metod special care este apelat automat la distrugerea obiectului. De obicei destructorul este vzut ca fiind inversul constructorului, el ocupndu-se de dezalocarea memoriei alocate clasei. Nu este obligatoriu ca fiecare clas s aib un destructor. Vizibilitatea membrilor unei clase. Fiecare membru a unei clase are un atribut denumit vizibilitate, care este indicat de unul dintre cuvintele rezervate: private, protected, public, published. Vizibilitatea determin modul n care membrii pot fi accesai:
n Pascal standard noiunea de clas nu exist, ea fiind nlocuit cu cea de obiect, de aici pot aprea anumite confuzii. Definiia de mai sus e valabil pentru Delphi, nu i pentru Pascal.
1

12

Utilizare Delphi 5

autor Popa Daniel

Private un membru private este invizibil n afara clasei n care este declarat, altfel spus o metod declarat ca fiind private nu poate fi apelat din alt modul, iar un cmp sau proprietate nu pot fi citite sau scrise din alt modul Protected un membru protected este vizibil doar n clasa n care a fost declarat i n toate clasele descendente. Public un membru public este vizibil n exteriorul clasei. Published acest mod de acces este utilizat atunci cnd se scriu componente. Toi membrii declarai n aceast zon vor fi vizibili n Object Inspector.

n scrierea programelor Delphi este utilizat foarte mult OOP deoarece se utilizeaz n special componente. Aceste componente sunt obiecte (dar nu toate obiectele sunt componente!) care fie sunt create de utilizator, fie sunt venite mpreun cu Delphi-ul, i pot fi reutilizate n orice alt program. Prezint mai jos o component TAnimate2 derivat din Tanimate :
type TAnimate2 = class(TAnimate) private { Private declarations, tot ceea ce e declarat mai jos nu e vizibil n afara clasei} fhintimage:Tbitmap; fhintcolor:Tcolor; fshowimage:boolean; { Proceduri si functii} procedure SetHintImage(v:Tbitmap); procedure SetHintColor(v:Tcolor); procedure setshowimage(v:boolean); procedure afisimg(Sender:TObject); procedure CMHintShow(var Message: TMessage); message CM_HINTSHOW; protected { Protected declarations } public { Public declarations } constructor Create(AOwner:TComponent);override; destructor Destroy;override; published { Published declarations } {pentru a citi proprietatea HintImage se citete din variabila fhintimage, iar pentru a o scrie se folosete procedura SetHintImage} property HintImage:Tbitmap read fhintimage write SetHintImage; {proprietatea de mai jos are definit i o valoare implicit(clwhite - culoarea alb)} property HintTransparentColor:Tcolor read fhintcolor write SetHintColor default clwhite; property ShowHintImage:boolean read fshowimage write SetShowImage default false; property active; property align; property Anchors; property Autosize; property BorderWidth; property Center; property Color; property CommonAVI; property Constraints; property Cursor; property FileName; property Height; property HelpContext; property Hint; property Left;

13

Utilizare Delphi 5
property Name; property ParentColor; property ParentShowHint; property Repetitions; property ShowHint; property StartFrame; property StopFrame; property Tag; property Timers; property Top; property Transparent; property Visible; property Width; {********Evenimente} property OnClose; property OnOpen; property OnStart; property OnStop; property OnClick; property OnMouseMove; end;

autor Popa Daniel

n exemplul de mai sus ai observat c a aprut override, care ne indic c acea metod poate fi rescris, astfel nct ntr-o clas derivat metoda respectiv va putea executa un cu totul alt cod. Dac se dorete ca utilizatorul s fie obligat s rescrie metoda atunci se poate adug virtual n dreptul metodei. ntrebri i probleme 1. Ce este un obiect? 2. Cum pot ascunde o metod, dar clasele derivate s o poat apela? 3. Ce este o clas? 4. Care este diferena dintre clas i obiect? 5. Din ce cauz avem metode i cmpuri private? 6. Cnd este apelat destructorul unei clase?

14

Utilizare Delphi 5

autor Popa Daniel

4.2 Lecia 2 Form(TForm)


Pentru descrierea formelor pot fi utilizate 50 de proprieti, care pot fi stabilite n perioada de elaborare a proiectului prin intermediul inspectorului de obiecte. Formele pot s reacioneze la 34 de evenimente. Scopul acestui capitol este prezentarea celor mai importante proprieti, metode i evenimente referitoare la forme. Se menioneaz faptul, c majoritatea proprietilor i evenimentelor formelor sunt identice cu proprietile i evenimentele referitoare la majoritatea componentelor. Astfel, de exemplu, atributul Width al unei forme descrie limea formei, iar n context cu o component acest atribut se va referi la limea componentei. Evenimentul OnClick n contextul formelor se refer la efectuarea unui clic pe form, iar n context cu componentele evenimentul se refer la efectuarea unui clic pe component. Proprietile formelor Proprietatea Action Este utilizat pentru centralizarea rspunsurilor la comenzile date de utilizator. Majoritii componentelor li se poate asocia o aciune, aciunile fiind centralizate i gestionate folosind componenta ActionList din pagina standard. Proprietatea ActiveControl Este utilizat atunci, cnd pe form au fost aezate mai multe componente i se dorete specificarea componentei care s fie n focar, n momentul iniial. Prin efectuarea unui clic pe butonul sgeat jos situat n coloana de valori se poate deschide o list, care conine numele tuturor componentelor formei, care pot fi n focar. Din lista afiat, printr-un clic, se poate selecta componenta necesar. La un moment dat numai o singur component poate s fie n focar. Proprietatea ActiveControl poate fi utilizat i n execuie. Dac n aceast proprietate se ncarc un alt nume de component, atunci componenta respectiv va fi pus n focar. Prin testarea valorii ataat acestei proprieti se poate decide care anume component este n focar la un moment dat. Dac forma nu este n focar, componenta memorat n ActiveControl desemneaz acea component, care va ajunge n focar n momentul n care forma va reobine focarul. Proprietatea Align Se utilizeaz pentru a alinia componentele sus, la stnga, jos sau la dreapta pe o form sau panel, acestea rmnnd pe poziie chiar dac forma sau panelul se redimensioneaz. Valoarea implicit este alNone, ceea ce nseamn c obiectul rmne acolo unde a fost poziionat. Proprietatea Anchors Se utilizeaz pentru a ne asigura c obiectul i pstreaz poziia relativ la marginile printelui(a componentei care o conine), chiar dac componenta printe este redimensionat. Cnd printele este redimensionat obiectul i pstreaz poziia relativ la marginile de care a fost ancorat. Proprietatea AutoScroll (boolean) Se refer la modul de utilizare a barelor de defilare ataate formei. n cazul n care se alege valoarea True, care este i valoarea implicit, atunci n caz de nevoie, n execuie, forma va fi prevzut cu bare de defilare. Aceste bare vor apare atunci cnd utilizatorul a redimensionat forme pri care componentele aezate pe form devin invizibile. Dac

15

Utilizare Delphi 5

autor Popa Daniel

se alege valoarea False, nu se vor aeza n mod automat bare de defilare la forma redimensionat. n acest caz ataarea barelor de defilare poate fi realizat prin intermediul proprietilor HorzScrollBar.

Proprietatea AutoSize(boolean) Se utilizeaz atunci cnd se dorete ca obiectul s se redimensioneze automat. Dac e pus pe true atunci se redimensioneaz automat dac coninutul se schimb. Proprietatea BidiMode Permite ajustarea modului de afiare i a comportamentului automat atunci cnd aplicaia ruleaz ntr-o zon n care se citete de la dreapta la stnga i nu de la stnga la dreapta. Proprietate compus BorderIcons Se refer la existena n linia de titlu a formei meniului sistem i a butoanelor de minimizare i maximizare. Aceast proprietate este de tip mulime, valorile posibile fiind urmtoarele:
Valoare biSistemMenu biMinimize biMaximize biHelp Semnificaie Forma este prevzut cu meniul sistem (control) Forma este prevzut cu un buton de minimizare Forma este prevzut cu un buton de maximizare Dac proprietatea BorderStyle conine valoarea bsDialog sau dac sunt excluse valorile biMinimize i biMaximize, atunci n bara de titlu va apare un semn de ntrebare. Dac se efectueaz un clic pe acest semn, cursorul de mouse va avea forma definit de comanda crHelp.

Valoarea implicit a proprietii BorderIcons este (biSystemMenu, biMinimize, biMaximize). Proprietatea BorderStyle Se refer la stilul chenarului formei. Valorile posibile ale acestei proprieti sunt urmtoarele:
Valoare bsDialog bsSingle bsNone bsSizeable bsToolWindow bsSizeToolWin Semnificaie Chenar neredimensionabil; chenarul standard al ferestrelor de dialog. Chenar neredimensionabil, desenat cu o linie simpl. Chenar neredimensionabil, desenat cu linie invizibil. Chenar redimensionabil standard. Similar cu bsSingle, dar este prevzut cu un mic titlu. Similar cu bsSizeable, dar este prevzut cu un mic tilu.

Proprietatea BorderWidth(de tip word) Se utilizeaz pentru controlul bordurii. Bordura este zona din imediata apropiere a marginilor n care nici o component nu poate fi plasat. Proprietatea Capiton (de tip string) Specific un ir de caractere care este afiat n linia de titlu al formei, de exemplu Form 1. n cazul componentelor aceast proprietate desemneaz eticheta ataat componentei. n acest ultim caz litera precedat de caracterul & este litera de selecie a componentei (litera de selecie este subliniat i componenta poate fi selectat prin combinaia Alt litera subliniat).

16

Utilizare Delphi 5

autor Popa Daniel

Proprietile ClientHeight i ClientWidth (de tip integer) Se refer la nlimea i limea zonei client a formei. Aceste valori sunt specificate n puncte. Zona client este aria utilizabil n interiorul chenarului formei. Proprietile Color (de tip Tcolor=longint) Stabilete culoarea de fond a formei. Pentru iniializarea valorii acestei proprieti pot fi folosite constante predefinite sau valori returnate de funcia RGB. Valoarea implicit este clBtnFace. Dac pentru proprietatea ParentColor corespunztoare unei componente se ia valoarea True, i se modific valoarea proprietii Color corespunztoare formei proprietar al componentei, aunci se va modifica automat i culoarea componentei. Proprietatea Constraints Se utilizeaz pentru a stabili dimensiunea minim i maxim pentru o component. Aceste dimensiuni nu pot fi depite. Proprietatea Ctl3D (de tip boolean) Determin dac forma sau componenta are aspect tridimensional (pentru True) sau aspect bidimensional (pentru False). Valoarea implicit este True. Dac pentru proprietatea Parenttl3D corespunztoare unei componente se ia valoarea True, i se modific valoarea proprietii Ctl3D corespunztoare formei proprietar al componentei, atunci se va modifica automat i aspectul componentei. Proprietatea Cursor Stabilete imaginea utilizat pentru reprezentarea cursorului mouse-ului. Pentru selectarea unei imagini se vor folosi diferitele constante predefinite de descriere a cursorului. Valoarea implicit este constanta crDefault. Proprietatea DefaultMonitor Stabilete pe care monitor va fi afiat forma, n cazul aplicaiilor multimonitor. Proprietatea DockSite Stabilete dac forma poate fi inta unei operaii drag-and-dock(trage i stabilete) Proprietatea DragKind Se folosete pentru a stabili dac se iau obiecte de pe control(drag) sau se pot pune pe el(dock). Proprietatea Enabled (de tip boolean) Se refer la accesibilitatea formei sau componentei. Dac se alege varianta True, care este i valoarea implicit, atunci forma sau componenta va reaciona la diferitele evenimente referioare la mouse, tastatur i ceas. Dac se alege varianta False, forma sau componenta va fi inhibat i nu va rspunde la evenimentele echipamentelor de intrare. Valoarea acestei proprieti de regul este modificat n execuie, de exemplu pentru a interzice utilizarea unor butoane de comand n contextul respectiv. Eticheta unei componente inhibate este afiat cu caractere estompate. O component inhibat ulterior poate fi reactivat, moment n care eticheta componentei va fi afiat cu caractere negre.

17

Utilizare Delphi 5

autor Popa Daniel

Proprietatea compus Font Stabilete fontul utilizat la textele care sunt afiate pe obiectul Canvas al formei precum i la textele aferente componentelor aezate pe form. Fontul utilizat poate fi definit n perioada de elaborare a proiectului, ns poate fi modificat n execuie, prin redefinirea subproprietilor Color (culoare), Height (nlime), Name (nume), Pitch (limea caracterelor), Size (dimensiune), sau Style (stil). Proprietatea FormStyle Stabilete stilul formei. Valorile posibile ale acestei proprieti sunt urmtoarele: Semnificaie Valoare Forma creaz o fereastr normal (nici MDI copil, nici MDI printe). fsNormal
Valoare implicit.

fsMDIChild fsMDIForm fsStayOnTop

Forma creaz o fereastr MDI copil Forma creaz o fereastr MDI printe Forma va fi afiat deasupra celorlalte forme utilizate n proiect.

Proprietile Height i Width (de tip integer) Sabilesc nlimea, respectiv lmea formei sau componentei. Aceste valori sunt exprimate n puncte care include i dimensiunile rezervate chenarelor. Proprietatea HelpContext Se folosete pentru a stabili un numr folosit n apelarea ajutorului(Help) contextsenzitiv, pentru a determina care fereastr de ajutor este afiat dac utilizatorul apas tasta F1. Dac HelpContext are valoarea 0 atunci va fi afiat fereastra de ajutor corespunztoare printelui. Proprietatea HelpFile Specific fiierul n care se afl ajutorul. Proprietatea Hint (de tip string) Specific un text explicativ care va fi afiat atunci cnd cursorul de mouse este aezat deasupra unei forme sau componente. Acest text este afiat numai aunci cnd proprietatea ShowHint (de tip boolean) este iniializat cu valoarea True. Proprietile compuse HorzScrollBar i VertScrollBar Stabilesc dac forma este prevzut sau nu cu bare de defilare orizontale i/sau verticale. Subproprietile barelor de defilare sunt centralizate n tabelul urmtor:
Proprietate Increment (o valoare cuprins ntre 1 i 32767, valoarea implicit este 8) Margin (de tip word, valoarea implicit este 0) Descriere Stabilete distana de deplasare a imaginii din form n momentul n care utilizatorul efectueaz un clic pe unul din butoanele cu sgei situate n extremitile barelor de defilare. Stabilete momentul de afiare al barei de defilare. Aceast proprietate determin numrul minim de puncte care separ componentele formei i muchia formei. n execuie, dac o component ajunge la o distan mai mic dect Margin puncte de la muchie, i dac proprietatea Visible are valoarea True, atunci se afieaz o bar de defilare. Comunic poziia actual a cursorului glisant al barei de defilare. Aceast valoare este actualizat automat n execuie, n funcie de defilare. Dimensiunea maxim de defilare, exprimat n puncte. La bara de defilare vertical aceast valoare trebuie s fie mai mare dect valoarea proprietii Height (n caz contrar bara vertical este invizibil). La bara

Position (de tip integer, valoarea implicit este 0) Range (de tip integer, valoarea implicit este 0)

18

Utilizare Delphi 5

autor Popa Daniel

de defilare orizontal aceast valoare trebuie s fie mai mare dect valoarea proprietii ClientWidth (n caz contrar bara orizontal este invizibil). De exemplu, dac proprietatea Range a unei bare orizontale conine valoarea 500, limea formei este 200, atunci valorile proprietii Position pot fi n intervalul (0, 300). Dac se alege valoarea True, imaginea din form se deplaseaz mpreun Tracking (de tip boolean, avnd cu butonul de glisare tras de utilizator. Dac se alege valoarea False, valoarea implicit False) imaginea rmne static atta timp ct utilizatorul trage butonul de glisare, deci actualizarea imaginii defilate va avea loc numai n momentul eliberrii butonului glisant al barei de defilare. Se refer la vizibilitatea barei de defilare. Dac se alege valoarea True, i Visible (de tip boolean, avnd dac componenta se afl la o distan mai mic dect Margin puncte de valoarea implicit True) muchia formei, atunci bara de defilare devine vizibil.

Proprietatea Icon Specific simbolul grafic care va fi utilizat atunci cnd forma este minimizat. Proprietatea KeyPreview (de tip boolean) Se refer la modul de gestiune a evenimentelor referitoare la utilizarea tastaturii (OnKeyDown, OnKeyPress i OnKeyUp). Dac pentru aceast proprietate se alege valoarea True, atunci evenimentele referitoare la tastatur sunt gestionate de forma actual, i nu de componentele aezate pe form, chiar dac n momentul respectiv n focar se afl o component. De exemplu, s presupunem c forma conine un buton de comand care este n focar. Dac utilizatorul apas o tast, evenimentele aferente tastrii vor fi gestionate de procedurile formei i nu de procedurile butonului de comand. Dac proprietatea este iniializat cu valoarea False, care este i valoarea implicit, atunci evenimentele referitoare la tastare vor fi gestionate de procedurile componentei active, i nu de procedurile formei. Proprietile Left i Top (de tip integer) Stabilesc abscisa, respectiv ordonata: Formei fa de colul stnga sus al ecranului; Componentei fa de colul stnga sau al formei proprietar; Componentei fa de colul stnga sus al unei componente de tip container. Valorile acestor proprieti sunt date n puncte. Proprietatea Menu (de tip TmainMenu) Stabilete componenta de meniu principal care este utilizat de form la un moment dat. n perioada de elaborare a proiectului aceast proprietate este iniializat automat cu prima component MainMenu aezat pe form; n execuie valoarea acestei proprieti poate fi modificat, printr-o instruciune de atribuire, astfel c o form poate s foloseasc mai multe componente MainMenu. Proprietatea Name Numele componentei. Orice component trebuie s aib un nume unic. Proprietatea ObjectMenuItem Se utilizeaz pentru a afla sau a preciza o opiune dintr-un meniu care devine activ sau inactiv atunci cnd un obiect OLE de pe formular este selectat sau deselectat. Proprietatea ParentBidiMode(boolean) Stabilete dac controlul folosete aceeai valoare pentru BidiMode ca i printele. 19

Utilizare Delphi 5

autor Popa Daniel

Proprietatea ParentFont(boolean) Stabilete dac controlul folosete acelai font ca i printele Proprietatea PixelPerInch Se utilizeaz n timpul rulrii programului pentru a modifica scara de mrire a formei la rezoluia curent. Dac valoarea este modificat fa de valoarea implicit, forma nu va avea aceleai proporii la diferite rezoluii. Pentru a avea efect trebuie ca proprietatea Scaled s fie true. Proprietatea PopupMenu (de tip TpopupMenu) Identific componenta de meniu flotant care este utilizat de form la un moment dat. Se menioneaz faptul c aceast propeietate nu este iniializat automat cu componenta PopupMenu aezat pe form. n execuie valoarea acestei proprietipoate fi modificat, printr-o instruciune de atribuire, astfel c o form poate s foloseasc mai multe componente PopupMenu. Proprietatea Position Se refer la dimensiunea formei i al locul de plasare a acesteia la execuie, fa de locul i dimensiunea care au fost utilizate n momentul realizrii proiectului. Valorile posibile sunt: Valoare Semnificaie Forma va avea aceeai poziie i dimensiuni ca n momentul poDesigned elaborrii proiectului. Poziia i dimensiunea ferestrei vor fi stabilite de ctre Windows poDefault Poziia este stabilit de ctre Windows, se pstreaz dimensiunile. poDefaultPosOnly Poziia este pstrat, Windows-ul alege dimensiunile. poDefaultSizeOnly Dimensiunile ferestrei se pstreaz, plasndu-se n centrul ecranului. poScreenCenter Se fac ajustri pentru aplicaiile multimonitor. Dimensiunile ferestrei se pstreaz, plasndu-se n centrul ecranului. po Nu se fac ajustri pentru aplicaiile multimonitor. Dimensiunile ferestrei se pstreaz, plasndu-se n centrul ferestrei PoMainFormCenter principale a aplicaiei. Nu se fac ajustri pentru aplicaiile multimonitor. PoOwnerFormCenter Dimensiunile ferestrei se pstreaz, plasndu-se n centrul ferestrei specificate de proprietatea Owner. Proprietatea PrintScale Se utilizeaz pentru a afla sau stabili proporiile ferestrei tiprite. Valorile posibile sunt: Valoare Semnificaie Nu se scaleaz deloc. poNone Fereastra este scalat astfel nct imaginea tiprit are aproximativ poProportional aceeai dimensiune ca i pe ecran. Forma este tiprit folosind aceleai proporii ca pe ecran, dar poPrintToFit modificate astfel nct s ncap pe pagin. Proprietatea Scaled Specific dac forma va fi redimensionat n funcie de valoarea PixelsPerInch

20

Utilizare Delphi 5

autor Popa Daniel

Proprietatea ShowHint Dac are valoarea true atunci va fi afiat o scurt informaie(Hint) despre obiectul deasupra cruia s-a oprit mouse-ul. Proprietatea Tag Utilizat pentru memorarea unei valori ntregi. Nu are un rol predestinat. Proprietatea UseDockManager Stabilete dac se utilizeaz un manager pentru operaia de drag-and-dock. Proprietatea Visible Dac este true atunci componenta este vizibil. Proprietatea WindowMenu Se folosete pentru a alfa sau stabili ce meniu se utilizeaz pentru o fereastr printe n cazul aplicaiilor MDI(multiple document interface). Proprietatea WindowState Se refer la modul de afiare pe ecran a ferestrei. Poate avea urmtoarele valori Valori Semnificaie wsNormal Fereastra este afiat normal. wsMinimized Fereastra este afiat miminizat wsMaximized Fereastra este afiat maximizat.

Metode Metoda BringToFront Aduce forma n fa. Metoda Close Se utilizeaz pentru nchiderea formei. Metoda Hide Ascunde forma. Metoda Refresh, Repaint Redeseneaz forma. Metoda ScaledBy(M, D:integer) Scaleaz toate obiectele de pe form de M/D ori. Spre exemplu dac M=15 i D=7 dimensiunile tuturor componentelor se vor nmuli cu valoarea 15/7, dimensiunile fonturilor vor fi modificate de asemenea. Metoda SendToBack Trimite forma n spatele tuturor ferestrelor existente pe ecran. Metoda SetFocus Se utilizeaz pentru a selecta obiectul(controlul).

21

Utilizare Delphi 5

autor Popa Daniel

Metoda Show Face vizibil forma.

Evenimente Pentru fiecare dintre evenimentele prezentate mai jos Delphi-ul ne permite s scriem o rutin care s trateze evenimentul respectiv. Dac n Object Inspector executm dublu clic pe unul dintre evenimente Delphi-ul va deschide editorul de cod n care a scris deja antetul procedurii care va trata evenimentul, noi urmnd s scriem partea de cod care va trata evenimentul. Procedura de tratare a evenimentului va avea cel puin un parametru Sender:TObject care ne va indica cine a generat evenimentul, parametru care n general nu e folosit. Dac mai sunt necesari anumii parametri pentru a trata evenimentul atunci acetia vor fi inclui, spre exemplu pentru evenimentul OnKeyPress, care apare la apsarea unei taste, va fi transmis ca parametru i tasta(caracterul) care a care a fost apsat. Evenimentul OnActivate Apare atunci cnd forma devine activ. Evenimentul OnCanResize Apare atunci cnd se redimensioneaz controlul. Avem posibilitatea s stabilim noile dimensiuni (NewWidth, NewHeight :Integer) i s stabilim dac suntem de acord cu redimensionarea (Resize:Boolean) Evenimentul OnClick Apare atunci cnd utilizatorul execut clic pe form. Evenimentul OnClose Apare la nchiderea formei. Modificnd parametrul Action avem posibilitatea de a decide ce se va executa. Parametrul Action poate avea valorile: Valoare Descriere Forma nu are voie s se nchid, deci nu se ntmpl nimic. caNone Forma va fi ascuns. Aplicaia o mai poate accesa. caHide Forma este nchis, iar memoria alocat ei va fi eliberat caFree Forma va fi minimizat. caMinimize Evenimentul OnCloseQuery Apare cnd metoda Close a fost apelat. Prin modificarea parametrului CanClose:Boolean decidem dac forma se poate nchide sau nu. Evenimentul OnConstrainedResize Apare imediat dup evenimentul OnCanResize. Se utilizeaz pentru aplicarea limitrilor dimensiunilor, parametrii MinWidth, MinHeight, MaxWidth, MaxHeight stabilind lungimea minim, nlimea minim, lungimea maxim, nlimea maxim. La ieirea din procedura de tratare a evenimentului vor fi aplicate constrngerile i se vor obine noile dimensiuni, dup care va apare evenimentul OnResize care va permite ajustrile finale. Evenimentul OnContextPopup Apare la clic dreapta. Parametrul MousePos:Tpoint ne va indica poziia mouse-ului , iar valoare pe care o vom atribui parametrului Handle:Boolean va decide dac va fi afiat

22

Utilizare Delphi 5

autor Popa Daniel

meniul(dac Handle=false, i proprietatea AutoPopup=true) sau dac nu se va executa nimic (Handle=true). Evenimentul OnCreate Apare la crearea formei. Evenimentul OnDblClick Apare atunci cnd utilizatorul execut dubclu clic pe form. Evenimentul OnDeactivate Apare cnd forma pierde focusul. Evenimentul OnDestroy Apare cnd forma este distrus. Evenimentul OnDockDrop Apare cnd un obiect este depus pe form prin operaia de drag-and-dock. Ca parametri vom avea Source care ne va indica de unde a fost luat obiectul, i poziia la care a fost lsat X, Y. Evenimentul OnDockOver Apare cnd un obiect este tras peste form pentru o operaie de drag-and-dock. Ca parametri vom avea Source care ne va indica de unde a fost luat obiectul, poziia la care se afl X, Y i Accept care dac are valoarea true se accept operaia, altfel nu. Evenimentul OnDragDrop Apare cnd utilizatorul d drumul obiectului adus prin operaia de drag-and-drop. Ca parametri vom avea Source care ne va indica de unde a fost luat obiectul, i poziia la care a fost lsat X, Y. Evenimentul OnDragOver Apare cnd un obiect este tras peste form pentru o operaie de drag-and-drop. Ca parametri vom avea Source care ne va indica de unde a fost luat obiectul, poziia la care se afl X, Y i Accept care dac are valoarea true se accept operaia, altfel nu. Evenimentul OnEndDock Apare cnd operaia de tragere s-a terminat. Se utilizeaz pentru a trata situaia n care operaia de drag-and-dock s-a terminat. Evenimentul OnGetSiteInfo Apare nainte de OnDockDrop dac proprietate DockSite este true. Evenimentul OnHelp Apare cnd forma primete o cerere de ajutor (Help). Evenimentul OnHide Apare atunci cnd forma este ascuns(spre exemplu dac Visible ia valoarea false) Evenimentul OnKeyDown

23

Utilizare Delphi 5

autor Popa Daniel

Apare la apsarea unei taste, dac componenta(n acest caz forma) este selectat. Parametrul Key ne d codul tastei apsate, iar parametrul Shift, care poate avea valorile ssShift, ssAlt, ssCtrl, ne indic care dintre tastele Shift, Ctrl sau Alt a mai fost apsat odat cu tasta. Pentru tastele care nu sunt litere sau cifre se pot folosi codurile virtuale (ex. VK_PAUSE, VK_RETURN, VK_ESCAPE ) Evenimentul OnKeyPress Apare dac utilizatorul apas o tast care genereaz un singur caracter. Parametrul Key conine caracterul tastei apsate. Dac a fost apsat o combinaie de taste, spre ex. Shift+F1, nu provoac acest eveniment. Evenimentul OnKeyUp Apare la eliberarea unei taste, dac componenta(n acest caz forma) este selectat. Parametrul Key ne d codul tastei apsate, iar parametrul Shift ne indic care dintre tastele Shift, Ctrl sau Alt a mai fost apsat odat cu tasta. Pentru tastele care nu sunt litere sau cifre se pot folosi codurile virtuale (ex. VK_PAUSE, VK_RETURN, VK_ESCAPE ) Evenimentul OnMouseDown Apare la apsarea unui buton al mouse-ului. Parametrul Button poate avea valorile mbLeft, mbRight, mbMiddle i ne indic care dintre butoanele mouse-ului au fost apsate. Parametrul Shift ne indic care dintre butoanele Ctrl, Shift sau Alt au fost apsate, iar parametrii X, Y ne indic poziia mouse-ului. Evenimentul OnMouseMove Apare la micarea mouse-ului peste un control(n acest caz form). Parametrul Shift ne indic care dintre tastele Shift, Alt, Ctrl au fost apsate, iar parametrii X, Y ne indic poziia mouse-ului. Evenimentul OnMouseUp Apare la eliberarea unui buton al mouse-ului. Parametrul Button poate avea valorile mbLeft, mbRight, mbMiddle i ne indic care dintre butoanele mouse-ului au fost apsate. Parametrul Shift ne indic care dintre butoanele Ctrl, Shift sau Alt au fost apsate, iar parametrii X, Y ne indic poziia mouse-ului. Evenimentul OnMouseWheel Apare cnd rotia mouse-ului este rotit, dac evenimentul nu este tratat (parametrul Handle are valoare False) atunci apare evenimentul OnMouseWheelUp sau evenimentul OnMouseWheelDown, n funcie de direcia n care este nvrtit rotia. Parametrul Shift ne indic care dintre tastele Ctlr, Alt sau Shift au fost apsate, parametrul WheelDelta ne indic de cte ori a fost nvrtit rotia. Evenimentul OnMouseWheelDown Apare la nvrtirea rotiei n jos, dac evenimentul OnMouseWheel nu a fost tratat. Procedura are aceei parametri ca i cea ce trateaz evenimentul OnMouseWheel Evenimentul OnMouseWheelUp Apare la nvrtirea rotiei n sus, dac evenimentul OnMouseWheel nu a fost tratat. Procedura are aceei parametri ca i cea ce trateaz evenimentul OnMouseWheel Evenimentul OnPaint

24

Utilizare Delphi 5 Apare atunci cnd forma este redesenat. Evenimentul OnResize Apare la redimensionarea formei.

autor Popa Daniel

Evenimentul OnShortCut Apare la apsarea unei taste nainte de evenimentul OnKeyDown. Se utilizeaz pentru a trata short-cut-urile nainte de a trata apsrile obinuite de taste. Evenimentul OnShow Apare atunci cnd forma este fcut vizibil. Evenimentul OnStartDock Apare atunci cnd utilizatorul ncepe s trag un obiect peste control, iar proprietatea DragKind are valoarea dkDock. Evenimentul OnUnDock Apare atunci cnd utilizatorul ncearc s ia un obiect ce se afl pe form. Parametrul Client ne indic obiectul ce va fi luat, parametrul NewTarget ne indic unde va fi dus obiectul, iar parametrul Allow l folosim pentru a permite operaia (dac i atribuim true), sau a o interzice. Probleme i ntrebri 1. Cum putem face invizibile butoanele sistem? 2. Cum putem realiza o form de dimensiune 100x100 care s nu poat fi redimensionat? 3. Scriei o aplicaie care s afieze poziia mouse-ului ca titlu a formei. 4. Scriei o aplicaie care s se nchid dac se apas butonul stng al mouse-ului pe form. 5. Scriei o aplicaie care s aib o form(fereastr) care s fug de mouse-ul utilizatorului ori de cte ori acesta ajunge cu mouse-ul pe ea.

25

Utilizare Delphi 5

autor Popa Daniel

4.3 Lecia 3 - Butonul


Butonul este des utilizat pentru a iniia diverse aciuni la apsare. n Delphi exist trei tipuri de butoane: Imagine Tip buton Button BitBtn Descriere butonul standard denumirea vine de la Bitmap Button i permite aezarea unui bitmap (imagini) n interiorul butonului. Exist posibilitatea de a stabili cte o imagine pentru fiecare stare a butonului: ridicat, apsat, dezactivat. permite adugarea unei (a unor) imagini care poate (pot) acoperi ntreg butonul. Butoanele de acest tip se pot grupa.

SpeedButton

Deoarece o mare parte din proprietile, metodele i evenimentele butoanelor sunt comune cu cele de la form voi trata doar ceea ce apare nou.

4.3.1 Button(TButton)
Se utilizeaz pentru a pune un buton standard pe form. Proprietile butonului Proprietatea Action Este utilizat pentru centralizarea rspunsurilor la comenzile date de utilizator. Majoritii componentelor li se poate asocia o aciune, aciunile fiind centralizate i gestionate folosind componenta ActionList din pagina standard. Proprietatea Anchors Se utilizeaz pentru a ne asigura c obiectul i pstreaz poziia relativ la marginile printelui(a componentei care o conine), chiar dac componenta printe este redimensionat. Cnd printele este redimensionat obiectul i pstreaz poziia relativ la marginile de care a fost ancorat. Proprietatea BidiMode Permite ajustarea modului de afiare i a comportamentului automat atunci cnd aplicaia ruleaz ntr-o zon n care se citete de la dreapta la stnga i nu de la stnga la dreapta. Proprietatea Cancel(boolean) Dac are valoarea true atunci la apsarea butonului Escape va avea loc evenimentul OnClick Proprietatea Capiton (de tip string) Specific un ir de caractere care este afiat pe buton, de exemplu Button1. n cazul componentelor aceast proprietate desemneaz eticheta ataat componentei. n acest ultim 26

Utilizare Delphi 5

autor Popa Daniel

caz litera precedat de caracterul & este litera de selecie a componentei (litera de selecie este subliniat i componenta poate fi selectat prin combinaia Alt litera subliniat). Proprietatea Constraints Se utilizeaz pentru a stabili dimensiunea minim i maxim pentru o component. Aceste dimensiuni nu pot fi depite. Proprietatea Cursor Stabilete imaginea utilizat pentru reprezentarea cursorului mouse-ului. Pentru selectarea unei imagini se vor folosi diferitele constante predefinite de descriere a cursorului. Valoarea implicit este constanta crDefault. Proprietatea Default Dac are valoarea true atunci la apsarea tastei Enter va avea loc evenimentul OnClick. Proprietatea DragCursor Specific ce imagine s fie utilizat pentru buton atunci cnd acesta este tras (dragg) Proprietatea DragKind Se folosete pentru a stabili dac se iau obiecte de pe control(drag) sau se pot pune pe el(dock). Proprietatea DragMode Stabilete dac utilizatorul poate executa operaia de drag(tragere). Dac valoarea proprietii este dnManual utilizatorul nu poate executa operaia, iar dac valoarea proprietii este dmAutomatic atunci poate executa operaia de drag. Proprietatea Enabled (de tip boolean) Se refer la accesibilitatea componentei. Dac se alege varianta True, care este i valoarea implicit, atunci componenta va reaciona la diferitele evenimente referitoare la mouse, tastatur i ceas. Dac se alege varianta False, componenta va fi inhibat i nu va rspunde la evenimentele echipamentelor de intrare. Valoarea acestei proprieti de regul este modificat n execuie, de exemplu pentru a interzice utilizarea unor butoane de comand n contextul respectiv. Eticheta unei componente inhibate este afiat cu caractere estompate. O component inhibat ulterior poate fi reactivat, moment n care eticheta componentei va fi afiat cu caractere negre. Proprietatea compus Font Stabilete fontul utilizat la textele care sunt afiate pe obiectul Canvas al formei precum i la textele aferente componentelor aezate pe form. Fontul utilizat poate fi definit n perioada de elaborare a proiectului, ns poate fi modificat n execuie, prin redefinirea subproprietilor Color (culoare), Height (nlime), Name (nume), Pitch (limea caracterelor), Size (dimensiune), sau Style (stil). Proprietile Height i Width (de tip integer) Sabilesc nlimea, respectiv lmea formei sau componentei. Aceste valori sunt exprimate n puncte care include i dimensiunile rezervate chenarelor.

27

Utilizare Delphi 5

autor Popa Daniel

Proprietatea HelpContext Se folosete pentru a stabili un numr folosit n apelarea ajutorului(Help) contextsenzitiv, pentru a determina care fereastr de ajutor este afiat dac utilizatorul apas tasta F1. Dac HelpContext are valoarea 0 atunci va fi afiat fereastra de ajutor corespunztoare printelui. Proprietatea ModalResult Proprietatea se poate utiliza pentru a nchide o fereastr modal (care a fost fcut vizibil cu metoda ShowModal), returnnd valoarea din ModalResult n cmpul ModalResult al ferestrei modale. Nu este necesar s scriem cod care s trateze apsarea butonului. Pentru clarificare vezi Exemplul 1. Proprietatea poate avea mai multe valori: Constant Valoare Ce face mrNone 0 Nimic MrOk idOK Utilizatorul a ieit apsnd butonul OK mrCancel idCancel Utilizatorul a ieit apsnd butonul CANCEL mrAbort idAbort Utilizatorul a ieit apsnd butonul ABORT mrRetry idRetry Utilizatorul a ieit apsnd butonul RETRY mrIgnore idIgnore Utilizatorul a ieit apsnd butonul IGNORE MrYes idYes Utilizatorul a ieit apsnd butonul YES MrNo idNo Utilizatorul a ieit apsnd butonul NO Proprietatea ParentShowHint(boolean) Se utilizeaz pentru a ne asigura c fie toate componentele afieaz Hint-ul fie toate nu l afieaz. Dac ParentShowHint e true atunci obiectul foloseste ShowHintul printelui, altfel decizia de a afia Hint-ul va fi luat n funcie de ShowHint-ul propriu. Proprietatea TabOrder Poate lua valori n intervalul 1..32767 i stabilete la a cta apsare a tastei Tab se ajunge la obiectul(controlul) respectiv. Primul obiect adugat are valoarea proprietii TabOrder 0, urmtorul 1, al treilea 2 s.a.m.d. Proprietatea TabStop(boolean) Se folosete pentru a permite sau interzice accesul la control prin folosirea tastei Tab.

Metode Metoda Click Simuleaz apsarea butonului.

Evenimente Evenimentul OnEnter Apare atunci cnd controlul(n cazul nostru butonul) primete focus-ul, spre exemplu cnd se ajunge cu Tab pe el. Evenimentul OnExit

28

Utilizare Delphi 5

autor Popa Daniel

Apare atunci cnd controlul pierde focus-ul, spre exemplu cnd un alt control de pe fereastr primete focus-ul. Pentru lmuriri vezi exemplul 2.

Exemple Exemplul 1 Urmtoarea aplicaie va folosi proprietatea ModalResult a butonului. Creai o nou aplicaie care are dou form-uri(ferestre): Form1 i Form2. Pe Form1 punei un buton a crui eveniment OnClick e tratat de procedura: procedure TForm1.Button1Click(Sender: TObject); begin if form2.ShowModal=mrok then form1.Caption:='OK' else form1.Caption:='No'; end; Pe Form2 punei dou butoane, unul avnd ModalResult=mrOk, iar cellalt avnd ModalResult=mrNo. Compilai, lansai n execuie i testai funcionarea programului apsnd succesiv pe cele dou butoane din fereastra a doua(Form2). Exemplul 2 Pentru a ilustra folosirea evenimentelor OnEnter i OnExit creai o nou aplicaie pe a crei fereastr punei dou butoane: Button1 i Button2, iar pentru Button2 scriei codul urmtor pentru tratarea evenimentelor OnEnter i OnExit: procedure TForm1.Button2Enter(Sender: TObject); begin button2.Caption:='Enter'; end; procedure TForm1.Button2Exit(Sender: TObject); begin button2.Caption:='Exit'; end; Compilai programul, lansai-l n execuie dup care trecei de la un buton la altul folosind tasta Tab.

4.3.2 BitBtn(TBitBtn)

Are aceleai proprieti, metode i evenimente ca i butonul clasic, n plus adugnduse posibilitatea de a avea o imagine(bitmap) pe buton. Proprieti

29

Utilizare Delphi 5

autor Popa Daniel

Proprietatea Glyph Care stabilete ce imagine va fi afiat pe buton. Putem avea maxim patru imagini n fiierul bitmap, toate imaginile fiind de aceeai dimensiune, aezate pe aceeai linie una lng cealalt. Pe buton va fi afiat una dintre imagini n funcie de starea butonului. Poziia Starea Descriere imaginii butonului Prima Sus Aceasta imagine apare dac butonul e n poziia ridicat. Dac nu exist alte imagini atunci aceast imagine este utilizat i pentru celelalte stri. A doua Dezactivat Apare dac butonul nu poate fi selectat (proprietatea enable = false) A treia Apsat Apare cnd s-a fcut clic pe buton. A patra Jos Apare dac butonul a rmas jos. Proprietate Kind Stabilete ce imagine se va afia pe buton, precum i valoarea ModalResult. Poate avea urmtoarele valori: Valoare Buton Descriere Va fi afiat imaginea din Glyph, valoarea ModalResult trebuie bkCustom stabilit manual Se poate utiliza pentru anularea unei aciuni. bkAbort bkAll bkCancel bkClose bkHelp bkIgnore bkNo bkOk bkRetry bkYes Este recomandat a se utiliza pentru selecia a mai multor opiuni. Valoarea proprietii Cancel este setat automat la valoarea true, ModalResult va avea valoarea mrCancel La apsarea butonului fereastra se va nchide. Valoarea proprietii Default este true. La apsarea butonului va fi apelat Help-ul programului. Este recomandat a se utiliza dac a aprut o eroare iar utilizatorul dorete s continue operaia Valoarea proprietii Cancel este setat automat la valoarea true, ModalResult va avea valoarea mrNo Valoarea proprietii Default este pus automat pe valoarea true, ModalResult va avea valoarea mrOk Este recomandat a se utiliza dac a aprut o eroare iar utilizatorul dorete s rencerce operaia. Valoarea proprietii Default este pus automat pe valoarea true, ModalResult va avea valoarea mrOk

Proprietatea Layout Stabilete poziia imaginii pe buton. Poate avea urmtoarele valori: Valoare Descriere blGlyphLeft Pune imaginea n partea stng a textului. BlGlyphRight Pune imaginea n partea dreapt a textului. BlGlyphTop Pune imaginea deasupra textului. BlGlyphBottom Pune imaginea sub text. Proprietatea Margin

30

Utilizare Delphi 5

autor Popa Daniel

Stabilete distana, n pixeli, ntre imagine i marginea butonului. Dac valoarea este 1 (valoare implicit) atunci imaginea i textul vor fi centrate Proprietatea NumGlyphs Indic numrul de imagini care se afl n bitmap-ul memorat n Glyph. Numrul de imagini poate fi ntre 1(valoare implicit) i 4. Proprietatea Spacing Stabilete numrul de pixeli dintre imagine i text, implicit are valoarea 4. Dac are valoarea 1 atunci textul va fi centrat ntre imagine i marginea butonului. Proprietatea Style Determin modul n care este afiat imaginea pe buton. Poate avea urmtoarele valori: Valoare Descriere bsAutoDetect Dac folosim Windows 3.1 bitmap-ul va avea nfiarea din Windows 3.1, altfel va avea noua nfiare. bsWin31 Va folosi nfiarea standard din Windows 3.1 bsNew Va folosi noua nfiare

4.3.3 SpeedButton(TSpeedButton)
Fa de butonul clasic TSpeedButton-ul introduce proprieti care s-i permit lucrul n grupuri de butoane, spre exemplu n bare de butoane. Proprieti Proprietatea AllowAllUp Determin dac toate butoanele ce fac parte dintr-un grup pot s fie toate ridicate simultan sau nu. Dac are valoare true atunci butoanele ce fac parte din acelai grup pot fi toate ridicate, altfel unul dintre butoane va fi apsat, iar la apsarea unui alt buton butonul apsat se va ridica. Dac cmpul GroupIndex este 0 atunci AllowAllUp nu are nici un efect. Proprietatea Down Se folosete pentru a afla dac butonul este apsat sau nu. Proprietatea este valabil doar dac proprietatea GroupIndex este diferit de 0. Proprietatea Flat Dac are valoarea true butonul nu va fi afiat 3D. Dac proprietatea are valoarea true putem folosi imagini(bitmap) care s ilustreze starea butonului. Proprietatea GroupIndex Permite s selectm din ce grup face parte butonul. Dac are valoarea 0 atunci fiecare buton acioneaz separat, iar dac are o valoare mai mare ca 0 atunci desemneaz numrul grupului din care face parte butonul. Dac utilizatorul apas un buton din grup acesta rmne apsat pn cnd un alt buton din grup va fi apsat. Proprietatea Transparent Specific dac fundalul butonului este transparent sau nu.

31

Utilizare Delphi 5

autor Popa Daniel

ntrebri i probleme 1. Cum procedm ca un buton s nu poat fi selectat dect cu mouse-ul?. 2. S se scrie o aplicaie care afind o fereastr pe care se afl un buton care fuge ori de cte ori utilizatorul a ajuns cu mouse-ul pe el, dar nu poate iei n afara ferestrei. 3. S se scrie o aplicaie care afieaz o fereastr pe care se afl trei butoane din care unul singur poate fi selectat la un moment dat i care afieaz un mesaj, ca titlu al ferestrei, n funcie de ce buton este apsat. 4. S se scrie o aplicaie care are butoane ce au alt culoare dect a ferestrei.

32

Utilizare Delphi 5

autor Popa Daniel

4.4 Lecia 4 Edit


Se utilizeaz pentru a permite programului s preia un text de la utilizator. Se poate utiliza i pentru a afia un text. Proprieti Proprietatea AutoFocus Dac are valoarea true atunci textul va fi selectat cnd controlul va primi focus-ul. Se pune pe valoarea true dac e mai probabil ca utilizatorul s nlocuiasc textul existent dect s adauge ceva la el. Proprietatea AutoSize Dac are valoarea true atunci controlul i va modifica nlimea dac nlimea textului se schimb, dac nu exist posibilitatea ca textul s fie trunchiat. Proprietatea BorderStyle Determin dac controlul va avea o bordur, i atunci are valoarea bsSingle, sau nu, i atunci are valoarea bsNone. Proprietatea CharCase Determin ce fel de litere se pot folosi(mari, mici sau combinat). Proprietatea poate lua urmtoarele valori: Valoare Descriere ecLowerCase Literele sunt transformate n litere mici ecNormal Se pot utiliza att litere mari ct i litere mici ecUpperCase Literele sunt transformate n litere mari Proprietatea HideSelection Determin dac textul rmne selectat atunci cnd controlul pierde focusul. Dac are valoare false atunci la pierderea focusului textul rmne selectat. Se poate accesa textul selectat prin intermediul proprietii SelText. Poziia de nceput a seleciei este memorat n proprietatea SelStart, iar lungimea textului selectat e memorat n SelLength. Proprietile ImeMode i ImeName Se utilizeaz pentru a stabili anumite opiuni pentru editorul IME ce se utilizeaz pentru limbile asiatice. Proprietatea MaxLength Stabilete numrul maxim de caractere ce poate fi introdus. Dac are valoarea 0 atunci nu exist nici un fel de limitare. Proprietatea OEMConvert Dac are valoare true atunci caracterelor vor fi traduse din ANSI n OEM i invers pentru a elimina caracterele ce nu pot fi folosite la denumirea unui fiier. Proprietile ParentBiDiMode, ParentColor, ParentCtl3D, ParentFont, ParentShowHint Au valoarea true dac se dorete ca proprietatea a crei nume apare dup Parent s aib aceeai valoare ca i a printelui(cu a componentei pe care se afl aezat) 33

Utilizare Delphi 5

autor Popa Daniel

Proprietatea PasswordChar Specific ce caracter se va afia dac se dorete citirea unei parole care nu trebuie s apar pe ecran. Dac are valoarea #0 atunci caracterele se vor afia normal. Proprietatea ReadOnly Dac are valoarea true nu se va putea modifica coninutul Edit-ului. Proprietatea Text Conine textul ce se afieaz n Edit. Proprietatea poate fi utilizat pentru a prelua ceea ce a tastat utilizatorul.

34

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