Calculatoare
Delphi - introducere in Delphi - prezentarea mediului DELPHI1.Introducere Lucrarea este destinata celor care doresc sa dezvolte aplicatii Windows utilizand mediul de programare Delphi. Am ales Delphi-ul deoarece este usor de invatat, fiind foarte asemanator cu limbajul Pascal care este predat in liceu. Un alt motiv pentru care am ales mediul Delphi este ca in urma compilarii programelor se obtin executabile mici ce ruleaza rapid si nu necesita librarii ca sa poata rula(un program similar scris in Visual Basic necesita cca. 5 Megabytes de librarii). Pentru a putea intelege si folosi acest manual este necesar ca utilizatorul sa cunoasca bine limbajul Pascal, deoarece Delphi-ul este practic limbajul Pascal orientat pe obiect. Cu toate ca Delphi-ul este un limbaj orientat pe obiect nu este necesara cunoasterea principiilor programarii intr-un astfel de limbaj pentru realizarea unor programe simple. Daca se doreste realizarea unor componente pentru Delphi sau modificarea unora dintre cele existente atunci este necesara cunoasterea principiilor programarii intr-un limbaj orientat pe obiect. Am ales pentru prezentare Delphi 5 Enterprise Edition deoarece este varianta cea mai completa, celelalte variante :Professional Edition, Standard Edition fiind variante prescurtate, care nu contin toate facilitatile variantei Enterprise. •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 minima), recomandabil 250 Mb •Monitor VGA, recomandabil SVGA cuorezolutie de 800x600 •Mouse Resursele necesare instalarii si rularii Delphi-ului sunt: •CD-ROM 2. Prezentarea mediului DELPHI 5 La pornirea Delphi-ului acesta va arata ca in figura de mai jos: Bara de meniuri Bare butoane Paleta de componente Pagini ale paletei de componente Inspectorul de obiecte Fereastra proiectului nou inceput Din bara de meniuri pot fi accesate meniurile Delphi-ului, bara de butoane permitand accesul rapid la principalele comenzi.Paleta de comenzi permite accesul rapid la cele peste 200 de componente ale mediului Delphi. Pentruomai buna gestionare a componentelor acestea sunt impartite pe mai multe pagini, existand si posibilitatea adaugarii unor pagini noi si a unor componente noi.In partea stanga a imaginii poate fi observat inspectorul de obiecte (object inspector) cu ajutorul caruia pot fi modificate proprietatile obiectelor(Properties) si pot fi stabilite ce rutine (proceduri) vor fi executate in momentul aparitiei unor evenimente(Events). 2.1 Principalele meniuri si comenzi(bara de meniuri) Meniul File Se utilizeaza a deschide, salva, inchide, tipari proiecte sau fisiere noi sau existente, pentru adaugarea unor noi ferestre(form) sau unitati de program(unit) proiectului deschis In meniu putem gasi urmatoarele optiuni: •New - deschideofereastra de dialog de unde putem alege ce obiect dorim sa cream, sau putem selecta un vrajitor (wizard) care sa ne ajute la crearea unui nou obiect. •New Application - creeaza un nou proiect care contineofereastra goala, un unit si un fisier de proiect. •New Form - creeazaofereastra goala sioadauga proiectului curent •New Frame - creeaza un nou frame (fereastra invizibila destinata componentelor nevizuale aflate in proiect, se utilizeaza pentruomai buna gestiune a componentelor folosite in cadrul proiectului) pentru proiectul curent •Open - deschideofereastra de dialog pentru incarcarea unui proiect, fereastra, unit sau fisier text. •Open Project - deschideofereastra de dialog pentru incarcarea unui proiect existent ( fisiere cu extensia BPR sau BPK) •Reopen - deschide un meniu care contine cele mai noi proiecte sau module utilizate •Save - salveaza fisierul curent •Save As - salveaza fisierul curent utilizand un nume nou •Save Project As - salveaza proiectul curent cu un nume nou •Save All - salveaza toate fisierele deschise •Close - inchide proiectul curent si toate fisierele asociate •Close All - inchide toate fisierele deschise •Use Unit - adauga unit-ul selectat la clauza uses a modulului activ •Print - tipareste fisierul curent •Exit - inchide proiectul si paraseste mediul Delphi Meniul Edit Se utilizeaza pentru a manipula text sau componente in timpul crearii programului. In meniu pot fi gasite urmatoarele optiuni: •Undo/Undelete - anuleaza ultima actiune sau stergere •Redo - anuleaza ultima operatie de undo •Cut - muta obiectul selectat in Clipboard •Copy - copiaza obiectul selectat in Clipboard •Paste - copiaza continutul Clipboard-ului la pozitia cursorului •Delete - sterge obiectul selectat •Select All - selecteaza toate componentele de pe fereastra (form) •Align to Grid - Aliniaza componentele selectate la cel mai apropiat punct din grila •Bring to Front - muta componenta selectata in fata •Send to Back - muta componenta selectata in spate •Align - aliniaza componentele •Size - redimensioneaza componentele selectate •Scale - redimensioneaza proportional toate componentele din fereastra •Tab Order - modifica ordinea in care se sare apasand tasta Tab •Creation Order - modifica ordinea in care sunt create componentele nevizuale •Flip Children - muta obiecte 'in oglinda' e util pentru cazul in care nu se citeste de la stanga la dreapta ci invers •Lock Controls Secures - 'intepeneste' toate componentele in pozitiile curente •Add to interface - definesteonoua metoda, un nou eveniment,onoua proprietate pentruocomponenta ActiveX Meniul Search Meniul se utilizeaza pentru a cauta text, obiecte, erori, unit-uri, variabile si simboluri in editorul de cod(fereastra in care se editeaza codul). In acest meniu putem gasi optiunile: •Find - cauta un text specificat si marcheaza prima aparitie a acestuia in editorul de cod •Find in Files - cauta textul specificat si afiseaza fiecare potrivire in fereastra aflata sub •Replace - cauta textul specificat si-l inlocuiese cu un altul •Search Again - repeta ultima cautare editorul de cod •Incremental Search - cauta textul pe masura ce este scris •Go to Line Number - muta cursorul la linia specificata •Find Error -cauta ultima eroare de rulare •Browse Symbol - cauta dupa un anumit simbol Meniul View Se utilizeaza pentru a afisa sau ascunde diverse elemente ale mediului Delphi. In meniu putem gasi urmatoarele optiuni: •Project Manager - afiseaza managerul de proiect, acesta poate fi utilizat pentru a naviga prin fisierele proiectului, pentru a le copia, sterge, adauga, salva. •Translation Manager - afiseaza managerul pentru traduceri •Object Inspector - afiseaza inspectorul de obiecte •To-Do List - face vizibila lista cu ceea ce trebuie facut in proiect •Alignment Palette - afiseazaofereastra in care se gasesc optiuni destinate alinierii obiectelor •Browser - afiseazaofereastra in care pot fi vizualizate unit-urile si clasele utilizate in proiect •Code Explorer - face vizibil editorul de cod •Component List - afiseazaolista cu toate componentele Delphi-ului •Window List - face vizibilaolista cu toate ferestrele Delphi-ului care sunt deschise •Debug Windows - afiseaza un meniu din care pot fi alese ce ferestre pentru depanarea programului vor fi afisate (puncte de intrerupere, apeluri ale subprogramelor, variabile, fire de executie, module, CPU, FPU ) •Desktops - permite afisarea, salvarea sau stergerea diverselor moduri de asezare a ferestrelor •Toggle Form/Unit - comuta intre fereastra si unit-ul corespunzatoe •Units - afiseazaolista cu toate unit-urile proiectului •Forms - afiseazaolista cu toate ferestrele(form) existente in proiect •Type Library - afiseaza editorul pentru librarii de tipuri (Type Library), util pentru a crea tipuri de informatii pentru controale ActiveX, obiecte MTS si alte obiecte COM •New Edit Window - deschide inca un editor de cod •Toolbars - deschide un meniu din care pot fi selectate ce bare de butoane vor fi afisate Meniul Project Este utilizat pentru a compilaoaplicatie. Pentru ca optiunile din meniu sa poata fi folosite e necesar sa fie deschis un proiect. In meniu avem urmatoarele comenzi: •Add to Project - adauga un fisier proiectului •Remove from Project - elimina un fisier din proiect •Import Type Library - afiseazaolista cu librariile de tipuri inregistrate in sistem •Add to Repository - adauga proiectul la lista de obiecte ce pot fi create, din meniul File optiunea New.pentru a fi adaugate la proiect. •View Source - afiseaza sursele proiectului in editorul de cod •Languages - permite adaugarea, eliminarea sau reinnoirea DLL-urilor pentru limba •Add New Project - adauga la proiectonoua aplicatie, un nou DLL •Add New Project - adauga la proiect un altul existent •Compile project - compileaza doar acele fisiere care au fost modificate de la ultima •Build project - compileaza toate modulele proiectului •Syntax Check project - verifica sintactic toate modulele proiectului compilare •Information for project - afiseaza informatii despre proiectul compilat (nr. de linii, dimensiunea programului rezultat ) •Compile All Projects - compileaza toate fisierele care au fost modificate de la ultima compilare in toate proiectele din grupul de proiecte •Build All Projects - compileaza toate fisierele in toate proiectele din grupul de proiecte •Web Deployment Option - se utilizeaza pentru a configura controalele ActiveX sau ActiveForm in vederea adaugarii lor la serverul web. •Web deploy - adauga controalele ActiveX sau ActiveForm, dupa configurarea acestora •Options - afiseazaofereastra de dialog in care se modifica optiunile pentru compilare, linkeditare etc. Meniul Run Meniul permite depanarea programelor. In acest meniu se afla urmatoarele optiuni: •Run - compileaza si executa aplicatia •Attach to Process - afiseazaolista cu procesele care pot fi depanate •Parameters - de aici se pot specifica: parametrii cu care va fi lansata in executie aplicatia, executabilul corespunzator unu DLL, un calculator pentru depanarea la distanta •Register ActiveX Server - adaugaointrare in registrii Windows-ului pentru controlul ActiveX , e valabila comanda atunci cand avem un proiect ActiveX. •Unregister ActiveX Server - sterge intrarea in registrii Windows-ului pentru controlul ActiveX , e valabila comanda atunci cand avem un proiect ActiveX. •Install MTS Object - Instaleaza obiectele MTS din proiect intr-um pachet MTS, comanda valabila doar daca proiectul curent este un obiect MTS(Microsoft transaction server) •Step over - executa un program linie cu linie, sarind peste proceduri, tratandu-le ca fiindosingura instructiune •Trace Into - executa un program linie cu linie, intrand in proceduri •Trace to Next Source - executa un program, oprindu-se la urmatoarea linie executabila din program •Run To Cursor - Executa programul curent pana la pozitia cursorului din editorul de cod •Run Until Return - executa procesul pana la iesirea din functia curenta •Show Execution Point - pozitioneaza cursorul la linia care se executa •Program Pause - opreste temporar executia programului ce ruleaza •Program Reset - termina executia programului ce ruleaza si elibereaza memoria ocupata de catre acesta •Inspect - deschideofereastra in care putem scrie numele variabilei ce se inspecteaza •Evaluate/Modify - afiseazaofereastra in care putem evalua sau modifica valoarea •Add Watch - afiseazaofereastra in care putem scrie mai multe variabile a caror valori dorim sa le urmarimunei expresii. •Add Breakpoint - afiseaza un meniu din care putem adauga, modifica puncte de intrerupere Meniul Component Din acest meniu se pot gestiona componentele instalate. Optiunile acestui meniu sunt: •New Component - deschideofereastra cu ajutorul careia se pot crea noi componente •Install Component - instaleazaonoua componenta existenta •Import ActiveX Control - adaugaolibrarie de tipuri de controale ActiveX •Create Component Template - salveaza componente modificate ca sabloane cu un nou •Install Packages - instaleaza un pachet de componente •Configure Palette - deschideofereastra din care se poate configura paleta de nume,onoua icoana, peonoua pagina componente, se pot sterge, ascunde, muta componente dintr-opagina in alta Meniul Database Din acest meniu se pot crea, modifica, urmari si vizualiza bazele de date. Meniul contine urmatoarele optiuni: •Explore - lanseaza in executie Database Explorer sau SQL Explorer, cu ajutorul carora se pot crea si manipula baze de date •SQL Monitor - lanseaza SQL Monitor cu ajutorul caruia se pot urmari alocarea resurselor si starea comenzilor date prin SQL Links •Form Wizard - se utilizeaza pentru crearea rapida a unor ferestre de vizualizare a bazelor de date Meniul Tools Meniul tools se utilizeaza pentru: -A vizualiza sau modifica configuratia mediului de programare -A vizualiza sau modifica configuratia depanatorului -A modifica obiectele ce pot fi create cu Delphi-ul -A modifica lista programelor ce apar in acest meniu -A crea sau modifica tabele ale bazelor de date -A crea sau modifica pachete de componente -A crea sau modifica imagini In acest meniu putem avea: •Enviroment Options - specifica configuratia dorita, caile catre librarii, paleta de •Editor Options - de aici se configureaza editorul de cod (culori, taste rapide, indentari etc)componente •Debugger Option - configurare program de depanare •Repository - gestioneaza modul de organizare a obiectelor ce pot fi create cu optiunea •Translation Repository - afiseaza translation repository, cu care por fi facute traduceri •Configure Tools - cu ajutorul aceste optiuni pot fi adaugate, sterse sau modificate New din meniul File optiuni ce apar in acest meniu Unelte optionale: •Database Desktop -lanseaza un utilitar cu ajutorul caruia putem crea, vizualiza, sorta, modifica si interoga baze de date. •Package Collection Editor - editor de pachete •Image Editor - lanseaza un utilitar cu ajutorul caruia putem edita fisiere de resurse, •Team Source - lanseaza un program destinat gestionarii unor proiecte dezvoltate de catre grupuri de programatori.icoane, bitmap-uri si cursoare care sa fie folosite in aplicatii Meniul Help Se utilizeaza pentru a accesa help-ul sistemului. In acest meniu putem gasi urmatoarele optiuni: •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 destinata programatorilor •Delphi Direct - legatura directa catre pagina Delphi-ului •Customize - permite gestionarea help-ului •About - informatii despre copyright si versiune 2.2 Bara de butoane Pe bara de butoane se afla scurtaturi catre cele mai utilizate comenzi. Open project Remove from project New Open Reopen Save Save all Add to project Help Units Forms Toggle New form Run Pause Trace into Step over 2.3 Paleta de componente Paleta de componente a Delphi-ului este impartita in mai multe pagini, in interiorul fiecarei pagini existand un numar variabil de componente. Structura paginilor poate fi schimbata, utilizatorul avand posibilitatea sa creeze pagini noi, componente noi, poate sa stearga componente sau poate sa le reordoneze. Pentru a obtine informatii generale despre pagina activa utilizatorul poate apasa tasta F1. Dacaocomponenta este selectata in momentul apasarii tastei F1 atunci vor fi afisate informatii despre componenta respectiva. Componentele pot sa fie: •Vizibile - componenta este vizibila, sau poate fi facuta vizibila in timpul rularii programului, spre exemplu butoanele •Invizibile - componenta apare sub forma unei imagini la scrierea programului, dar in timpul rularii nu e vizibila, spre exemplu timer-ul Fiecare componenta are anumite atribute cu ajutorul carora controlam aplicatia : •Proprietatile(properties) - ne permit accesul la metodele sau campurile unei clase. •Metode(methods) - proceduri si functii asociate unui obiect •Evenimentele(events) - sunt actiuni ale utilizatorului, ex. apasarea unui buton, sau ale sistemului de operare recunoscute de catre componenta. Fiecare componenta areolista de evenimente pe care le recunoaste si la care poate raspunde. Exista posibilitatea de a asocia un cod care sa se execute fiecarui eveniment. In tabelul de mai jos sunt prezentate paginile paletei de componente, precum sio descriere scurta a continutului fiecarei pagini. Nume Descriere Standard Controale standard: butoane, meniuri, etichete Additional Controale specializate: butoane ce pot contine imagini, liste derulante Win32 Controale pentru Windows9x/NT: calendar, bare de stare, System Componente si controale destinate lucrului cu sistemul: timer, media player Data Access Componente invizibile cu ajutorul carora se poate realiza conectarea la diferite baze de date utilizand Borland Database Engine (BDE) Data Controls Componente vizuale destinate accesului(vizualizare, stergere, modificare, adaugare date) la bazele de date ADO Componente ce permit conectarea la baze de date folosind ActiveX Data Objects (ADO) Interbase Componente ce permit conectarea la un server Interbase fara BDE sau ADO Midas Componentele din aceasta pagina permit lucrul cu baze de date distribuite InternetExpress Componentele din aceasta pagina aplicatii InternetExpress care sunt simultan aplicatii Web Server si clienti pentru baze de date distribuite permit construirea de Internet Suport pentru crearea aplicatiilor pentru Internet FastNet Oferaovarietate de protocoale de acces la Internet Decision Cube Componente care vizualizeaza datele din bazele de date ajutand la luarea deciziilor Quick Report Componente ce ajuta la crearea unor rapoarte Win3.1 Componente pentru compatibilitatea inapoi cu Delphi 1 (a nu se folosi) Samples Exemple de componente (sursele lor se gasesc: Delphi5sourcesamples) ActiveX Componente model de tip ActiveX Servers Componente destinate accesului la diferite servere 2.4 Inspectorul de obiecte (object inspector) Inspectorul de obiecte este utilizat pentru a modifica proprietatilesi a scrie rutinele de tratare a evenimentelor. Acesta este prevazut cu doua pagini: obiectelor •Properties - care permite stabilirea •Events - destinata gestionarii evenimentelor legate de componente.proprietatilor obiectelor Pagina Properties Este prevazuta cu doua coloane: pe coloana stanga sunt listate denumirile proprietatilor pe coloana dreapta avem valorile actuale ale acestora Atribuirea unei valori se poate face in trei moduri: prin linia de editare aferenta proprietatii(ex. Caption) prin lista derulanta(ex. BorderStyle) prin intermediul unei ferestre de dialog(ex. Font) Anumite proprietati (ex. Color) admit doua modalitati de atribuire a unei valori, prin lista derulanta, sau daca se da dublu clic, prin fereastra de dialog. La unele proprietati (ex. BorderIcons, Constrains) numele este precedat de un semn plus. In aceste cazuri proprietatea respectiva desemneazaolista de proprietati. Pagina Events Este prevazuta cu doua coloane: pe coloana stanga sunt listate denumirile evenimentelor pe coloana dreapta avem procedurile ce trateaza evenimentele Atribuirea unei valori se poate face in doua moduri: prin linia de editare, se da dublu clic pe coloana din dreapta, corespunzatoare evenimentului pe care dorim sa-l tratam, iar Delphi-ul deschide editorul de cod si ne permite scrierea codului ce se doreste a fi executat la aparitia evenimentului respectiv. Antetul procedurii(metodei) de tratare a evenimentului este scris automat de catre editor. Daca procedura aferenta unui eveniment nu contine niciolinie de cod aceasta va fi stearsa. prin lista derulanta, din care se poate alegeoprocedura care a fost definita de programator anterior, daca de doreste sa se execute aceeasi rutina pentru mai multe evenimente. 3. Gestiunea componentelor 3.1 Asezarea componentelor peoforma(form) Pentru a asezaocomponenta se poate proceda astfel: - Se efectueaza un clic de mouse pe simbolul grafic al componentei - Se efectueaza un clic in pozitia in care se doreste plasarea coltului stanga sus a componentei. O alta posibilitate de a asezaocomponenta, dar de aceasta data in centrul ferestrei este de a da dublu clic pe aceasta. Daca se doreste adaugarea mai multor componente identice atunci se procedeaza astfel: - Se apasa tasta SHIFT - Se efectueaza clic pe simbolul grafic al componentei dorite, dupa ace se poate elibera tasta SHIFT - Se pozitioneaza obiectul in pozitiile dorite - Pentru revenirea la normal se va efectua un clic pe simbolul sagetii, aflat in partea din stanga a paginii cu componente. Delphi-ul contine si anumite componente destinate gruparii mai multor componente: GroupBox, RadioGroup si Panel. Aceste componente container permit gestionare mai usoara a componentelor continute: se pot muta simultan, pot fi modificate anumite proprietati simultan(font, culoare) 3.2 Manipularea componentelor asezate Operatiile se pot executa asupra unei componente doar daca aceasta este selectata. Putem selectaocomponenta in mai multe moduri: Se efectueaza clic in interiorul componentei Se alege obiectul din lista derulanta a inspectorului de obiecte Daca focarul este pe fereastra se poate trece de laocomponenta la alta cu tasta TAB In anumite cazuri este necesara realizarea unei operatii asupra mai multor componente. Pentru aceasta este necesara selectarea obiectelor asupra carora se va efectua operatia. Putem selecta un grup de obiecte in doua moduri: - Cu tasta SHIFT apasata executam clic pe fiecare din componentele dorite - Realizam un dreptunghi imaginar prin apasarea butonului stang al mouse-ului si miscarea acestuia astfel incat sa cuprindem in interiorul dreptunghiului componentele dorite. Daca de doreste selectarea tuturor obiectelor se poate alege optiunea Select All din meniul Edit.
•Cut - muta obiectele selectate in clipboard •Copy - copiaza obiectele selectate in clipboard •Paste - copiaza din clipboardAsupra obiectelor selectate se pot aplica comenzile(ce se gasesc in meniul Edit): •Delete - sterge obiectele selectate •Align to Grid - aliniaza toate componentele la cele mai apropiate puncte de retea •Bring to Front - deplaseaza componentele selectate in fata celorlalte componente •Send to back - deplaseaza componentele selectate in spatele celorlalte componente •Align - afiseazaofereastra de dialog cu ajutorul careia un grup de componente pot fi •Size - afiseazaofereastra de dialog cu ajutorul careia se pot redimensiona componentele selectate(la dimensiunea celei mai mari, celei mai mici componente )aliniate (dupa cea mai din stanga, cea mai din dreapta, cea mai de sus ) •Scale - se pot scala (mari sau micsora)procentual componentele selectate •Tab Order - afiseazaofereastra de dialog cu ajutorul careia putem schimba ordinea de parcurgere a componentelor, acesta se parcurg in ordine cu Tab sau cu Shift+Tab in ordine inversa •Creation Order - afiseazaofereastra de dialog din care putem schimba ordinea de creare a obiectelor •Lock - blocheaza/deblocheazaocomponenta Comenzile Align to Grid, Bring to Front, Send to Back, Align, Size, Scale, Tab Order, Creation Order mai pot fi gasite si in meniul care apare daca executam clic dreapta pe un obiect. Daca se doreste se poate face vizibilaopaleta de comenzi destinate alinierii obiectelor( meniul View optiunea Alingment Palette). 4 Programarea in Delphi 4.1 Lectia 1 - Programarea orientata pe obiect (OOP) Notiunea de obiect. Caracteristici. Ideea OOP este de a pune la un loc, intr-un singur container, atat datele cat si partea de cod(proceduri si functii, care poarta denumirea de metode) . Containerul se numeste obiect. Obiectul releva utilizatorului (programatorului care utilizeaza obiectul) doar ceea ce este necesar, astfel incat utilizarea obiectului sa fie cat mai usoara. Toate mecanismele interne pe care utilizatorul nu are nevoie sa le cunoasca sunt ascunse. OOP permiteoabordare modulara a programarii, ceea ce ne fereste de necesitatea rescrierii unor parti de cod. O alta caracteristica importanta a obiectelor este mostenirea. Prin mostenire se intelege acea proprietate a obiectelor prin care un obiect nou construit preia datele si metodele unui alt obiect, parinte. Aceasta caracteristica ne permite scrierea rapida si usoara a unor obiecte asemanatoare, care au unele date si metode comune. Se poate intampla ca anumite metode a unei clase sa fie rescrise, astfel incat, chiar dacaoclasa descendenta are metode cu acelasi nume, sa faca cu totul altceva. Aceasta caracteristica poarta denumirea de polimorfism. Notiunea de clasa. Caracteristici. O clasa sau un tip de clasa definescostructura ce contine campuri, metode si proprietati. Instanta unui tip de clasa poarta denumirea de obiect1. Un camp este de faptovariabila care face parte dintr-un obiect. La fel ca si campurile unui record, campul unei clase reprezintaodata care exista in fiecare instanta a unei clase. O metoda esteoprocedura sauofunctie asociata cuoclasa. Majoritatea metodelor opereaza asupra obiectelor, care sunt instante ale claselor. O proprietate esteointerfata pentru data asociata unui obiect(data care de obicei este stocata intr-un camp). Proprietatile au specificatori de acces care determina modul in care datele pot fi citite sau modificate. Din program, din afara obiectului,oproprietate apare cel mai adesea la fel ca un camp. Pentru obiecte se aloca dinamic blocuri de memorie a caror structura este determinata de tipul de clasa. Fiecare obiect areocopie unica a fiecarui camp definit in clasa, dar toate instantele unei clase impart aceleasi metode. Obiectele sunt create si distruse cu ajutorul unor metode speciale numite constructori si destructori. Constructorul esteometoda utilizata pentru crearea unei instante a unei clase. Are rolul de a initializa unele campuri, de a aloca memorie, sau a face tot ceea ce este necesar initializarii obiectului. Nu este obligatoriu sa definim un constructor, daca acesta nu a fost definit se utilizeaza constructorul implicit Create. Destructorul esteometoda speciala care este apelata automat la distrugerea obiectului. De obicei destructorul este vazut ca fiind inversul constructorului, el ocupandu-se de dezalocarea memoriei alocate clasei. Nu este obligatoriu ca fiecare clasa sa aiba un destructor. Vizibilitatea membrilor unei clase. Fiecare membru a unei clase are un atribut denumit vizibilitate, care este indicata de unul dintre cuvintele rezervate: private, protected, public, published. Vizibilitatea determina modul in care membrii pot fi accesati: In Pascal standard notiunea de clasa nu exista, ea fiind inlocuita cu cea de obiect, de aici pot aparea anumite confuzii. Definitia de mai sus e valabila pentru Delphi, nu si pentru Pascal.1 •Private - un membru private este invizibil in afara clasei in care este declarat, altfel spusometoda declarata ca fiind private nu poate fi apelata din alt modul, iar un camp sau proprietate nu pot fi citite sau scrise din alt modul •Protected - un membru protected este vizibil doar in clasa in care a fost declarat si in toate clasele descendente. •Public - un membru public este vizibil in exteriorul clasei. •Published - acest mod de acces este utilizat atunci cand se scriu componente. Toti membrii declarati in aceasta zona vor fi vizibili in Object Inspector. In scrierea programelor Delphi este utilizata foarte mult OOP deoarece se utilizeaza in special componente. Aceste componente suntsunt componente!) care fie sunt create de utilizator, fie sunt venite impreuna cu Delphi-ul, si pot fi reutilizate in orice alt program. obiecte (dar nu toate obiectele Prezint mai josocomponenta TAnimate2 derivata din Tanimate : type TAnimate2 = class(TAnimate) private fhintimage:Tbitmap; fhintcolor:Tcolor; fshowimage:boolean; 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 public constructor Create(AOwner:TComponent);override; destructor Destroy;override; published property HintImage:Tbitmap read fhintimage write SetHintImage; 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; 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; property OnClose; property OnOpen; property OnStart; property OnStop; property OnClick; property OnMouseMove; end; In exemplul de mai sus ati observat ca a aparut override, care ne indica ca acea metoda poate fi rescrisa, astfel incat intr-oclasa derivata metoda respectiva va putea executa un cu totul alt cod. Daca se doreste ca utilizatorul sa fie obligat sa rescrie metoda atunci se poate adauga virtual in dreptul metodei. Intrebari si probleme 1. Ce este un obiect? 2. Cum pot ascundeometoda, dar clasele derivate saopoata apela? 3. Ce esteoclasa? 4. Care este diferenta dintre clasa si obiect? 5. Din ce cauza avem metode si campuri private? 6. Cand este apelat destructorul unei clase? 4.2 Lectia 2 - Form(TForm) Pentru descrierea formelor pot fi utilizate 50 de proprietati, care pot fi stabilite in perioada de elaborare a proiectului prin intermediul inspectorului de obiecte. Formele pot sa 'reactioneze' la 34 de evenimente. Scopul acestui capitol este prezentarea celor mai importante proprietati, metode si evenimente referitoare la forme. Se mentioneaza faptul, ca majoritatea proprietatilor si evenimentelor formelor sunt identice cu proprietatile si evenimentele referitoare la majoritatea componentelor. Astfel, de exemplu, atributul Width al unei forme descrie latimea formei, iar in context cuocomponenta acest atribut se va referi la latimea componentei. Evenimentul OnClick in contextul formelor se refera la efectuarea unui clic pe forma, iar in context cu componentele evenimentul se refera la efectuarea unui clic pe componenta. Proprietatile formelor Proprietatea Action Este utilizata pentru centralizarea raspunsurilor la comenzile date de utilizator. Majoritatii componentelor li se poate asociaoactiune, actiunile fiind centralizate si gestionate folosind componenta ActionList din pagina standard. Proprietatea ActiveControl Este utilizata atunci, cand pe forma au fost asezate mai multe componente si se doreste specificarea componentei care sa fie in focar, in momentul initial. Prin efectuarea unui clic pe butonul 'sageata jos' situat in coloana de valori se poate deschideolista, care contine numele tuturor componentelor formei, care pot fi in focar. Din lista afisata, printr-un clic, se poate selecta componenta necesara. La un moment dat numaiosingura componenta poate sa fie in focar. Proprietatea ActiveControl poate fi utilizata si in executie. Daca in aceasta proprietate se incarca un alt nume de componenta, atunci componenta respectiva va fi pusa in focar. Prin testarea valorii atasata acestei proprietati se poate decide care anume componenta este in focar la un moment dat. Daca forma nu este in focar, componenta memorata in ActiveControl desemneaza acea componenta, care va ajunge in focar in momentul in care forma va reobtine focarul. Proprietatea Align Se utilizeaza pentru a alinia componentele sus, la stanga, jos sau la dreapta peoforma sau panel, acestea ramanand pe pozitie chiar daca forma sau panelul se redimensioneaza. Valoarea implicita este alNone, ceea ce inseamna ca obiectul ramane acolo unde a fost pozitionat. Proprietatea Anchors Se utilizeaza pentru a ne asigura ca obiectul isi pastreaza pozitia relativ la marginile parintelui(a componentei careocontine), chiar daca componenta parinte este redimensionata. Cand parintele este redimensionat obiectul isi pastreaza pozitia relativ la marginile de care a fost ancorat. Proprietatea AutoScroll (boolean) Se refera la modul de utilizare a barelor de defilare atasate formei. In cazul in care se alege valoarea True, care este si valoarea implicita, atunci in caz de nevoie, in executie, forma va fi prevazuta cu bare de defilare. Aceste bare vor apare atunci cand utilizatorul a redimensionat forme pri care componentele asezate pe forma devin invizibile. Daca se alege valoarea False, nu se vor aseza in mod automat bare de defilare la forma redimensionata. In acest caz atasarea barelor de defilare poate fi realizata prin intermediul proprietatilor HorzScrollBar. Proprietatea AutoSize(boolean) Se utilizeaza atunci cand se doreste ca obiectul sa se redimensioneze automat. Daca e pusa pe true atunci se redimensioneaza automat daca continutul se schimba. Proprietatea BidiMode Permite ajustarea modului de afisare si a comportamentului automat atunci cand aplicatia ruleaza intr-ozona in care se citeste de la dreapta la stanga si nu de la stanga la dreapta. Proprietate compusa BorderIcons Se refera la existenta in linia de titlu a formei meniului sistem si a butoanelor de minimizare si maximizare. Aceasta proprietate este de tip multime, valorile posibile fiind urmatoarele: Valoare Semnificatie biSistemMenu Forma este prevazuta cu meniul sistem (control) 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 in bara de titlu va apare un semn de intrebare. Daca se efectueaza un clic pe acest semn, cursorul de mouse va avea forma definita de comanda crHelp. Valoarea implicita a proprietatii BorderIcons este (biSystemMenu, biMinimize, biMaximize). Proprietatea BorderStyle Se refera la stilul chenarului formei. Valorile posibile ale acestei proprietati sunt urmatoarele: Valoare Semnificatie bsDialog Chenar neredimensionabil; chenarul standard al ferestrelor de dialog. bsSingle Chenar neredimensionabil, desenat cuolinie simpla. bsNone Chenar neredimensionabil, desenat cu linie invizibila. bsSizeable Chenar redimensionabil standard. bsToolWindow Similar cu bsSingle, dar este prevazut cu un mic titlu. bsSizeToolWin Similar cu bsSizeable, dar este prevazut cu un mic tilu. Proprietatea BorderWidth(de tip word) Se utilizeaza pentru controlul bordurii. Bordura este zona din imediata apropiere a marginilor in care niciocomponenta nu poate fi plasata. Proprietatea Capiton (de tip string) Specifica un sir de caractere care este afisat in linia de titlu al formei, de exemplu Form 1. In cazul componentelor aceasta proprietate desemneaza eticheta atasata componentei. In acest ultim caz litera precedata de caracterul '&' este litera de selectie a componentei (litera de selectie este subliniata si componenta poate fi selectata prin combinatia Alt - litera subliniata). Proprietatile ClientHeight si ClientWidth (de tip integer) Se refera la inaltimea si latimea zonei client a formei. Aceste valori sunt specificate in puncte. Zona client este aria utilizabila in interiorul chenarului formei. Proprietatile Color (de tip Tcolor=longint) Stabileste culoarea de fond a formei. Pentru initializarea valorii 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, aunci se va modifica automat si culoarea componentei. Proprietatea Constraints Se utilizeaza pentru a stabili dimensiunea minima si maxima pentruocomponenta. Aceste dimensiuni nu pot fi depasite. Proprietatea Ctl3D (de tip boolean) Determina daca forma sau componenta are aspect tridimensional (pentru True) sau aspect bidimensional (pentru False). Valoarea implicita este True. Daca pentru proprietatea Parenttl3D 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 mouse-ului. Pentru selectarea unei imagini se vor folosi diferitele constante predefinite de descriere a cursorului. Valoarea implicita este constanta crDefault. Proprietatea DefaultMonitor Stabileste pe care monitor va fi afisata forma, in cazul aplicatiilor multimonitor. Proprietatea DockSite Stabileste daca forma poate fi tinta unei operatii drag-and-dock(trage si stabileste) Proprietatea DragKind Se foloseste pentru a stabili daca se iau obiecte de pe control(drag) sau se pot pune pe el(dock). Proprietatea Enabled (de tip boolean) Se refera la accesibilitatea formei sau componentei. Daca se alege varianta True, care este si valoarea implicita, atunci forma sau componenta va reactiona la diferitele evenimente referioare la mouse, tastatura si ceas. Daca se alege varianta False, forma sau componenta va fi inhibata si nu va raspunde la evenimentele echipamentelor de intrare. Valoarea acestei proprietati de regula este modificata in executie, de exemplu pentru a interzice utilizarea unor butoane de comanda in contextul respectiv. Eticheta unei componente inhibate este afisata cu caractere estompate. O componenta inhibata ulterior poate fi reactivata, moment in care eticheta componentei va fi afisata cu caractere negre. Proprietatea compusa Font Stabileste fontul utilizat la textele care sunt afisate pe obiectul Canvas al formei precum si la textele aferente componentelor asezate pe forma. Fontul utilizat poate fi definit in perioada de elaborare a proiectului, insa poate fi modificat in executie, prin redefinirea subproprietatilor Color (culoare), Height (inaltime), Name (nume), Pitch (latimea caracterelor), Size (dimensiune), sau Style (stil). Proprietatea FormStyle Stabileste stilul formei. Valorile posibile ale acestei proprietati sunt urmatoarele: Valoare Semnificatie fsNormal Forma creazaofereastra normala (nici MDI copil, nici MDI parinte). Valoare implicita. fsMDIChild Forma creazaofereastra MDI copil fsMDIForm Forma creazaofereastra MDI parinte fsStayOnTop Forma va fi afi at deasupra celorlalte forme utilizate n proiect Proprietatile Height si Width (de tip integer) Sabilesc inaltimea, respectiv latmea formei sau componentei. Aceste valori sunt exprimate in puncte care include si dimensiunile rezervate chenarelor. Proprietatea HelpContext Se foloseste pentru a stabili un numar folosit in apelarea ajutorului(Help) context- senzitiv, pentru a determina care fereastra de ajutor este afisata daca utilizatorul apasa tasta F1. Daca HelpContext are valoarea 0 atunci va fi afisata fereastra de ajutor corespunzatoare parintelui. Proprietatea HelpFile Specifica fisierul in care se afla ajutorul. Proprietatea Hint (de tip string) Specifica un text explicativ care va fi afisat atunci cand cursorul de mouse este asezat deasupra unei forme sau componente. Acest text este afisat numai aunci cand proprietatea ShowHint (de tip boolean) este initializata cu valoarea 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 centralizate in tabelul urmator: Proprietate Descriere Increment (o valoare cuprinsa intre 1 si 32767, valoarea Stabileste distanta de deplasare a imaginii din forma in momentul in care utilizatorul efectueaza un clic pe unul din butoanele cu sageti situate in extremitatile barelor de defilare. implicita este 8) Margin (de tipimplicita este 0) word, valoarea Stabileste momentul de afisare al barei de defilare. Aceasta proprietate determina numarul minim de puncte care separa componentele formei si muchia formei. In executie, dacaocomponenta ajunge laodistanta mai mica decat Margin puncte de la muchie, si daca proprietatea Visible are valoarea True, atunci se afiseazaobara de defilare. Position (de tip integer, valoarea implicita este 0) Comunica pozitia actuala a cursorului glisant al barei de defilare. Aceasta valoare este actualizata automat in executie, in functie de defilare. Range (de tip integer, valoarea implicita este 0) Dimensiunea maxima de defilare, exprimata in puncte. La bara de defilare verticala aceasta valoare trebuie sa fie mai mare decat valoarea proprietatii Height (in caz contrar bara verticala este invizibila). La bara de defilare orizontala aceasta valoare trebuie sa fie mai mare decat valoarea proprietatii ClientWidth (in caz contrar bara orizontala este invizibila). De exemplu, daca proprietatea Range a unei bare orizontale contine valoarea 500, latimea formei este 200, atunci valorile proprietatii Position pot fi in intervalul (0, 300). Tracking (de avand valoarea implicita False) tip boolean, Daca se alege valoarea True, imaginea din forma se deplaseaza impreuna cu butonul de glisare tras de utilizator. Daca se alege valoarea False, imaginea ramane statica atata timp cat utilizatorul trage butonul de glisare, deci actualizarea imaginii defilate va avea loc numai in momentul eliberarii butonului glisant al barei de defilare. Visible (deav nd valoarea implicita True) tip boolean, Se refera la vizibilitatea barei de defilare. Daca se alege valoarea True, si daca componenta se afla laodistanta mai mica decat Margin puncte de muchia formei, atunci bara de defilare devine vizibila. Proprietatea Icon Specifica simbolul grafic care va fi utilizat atunci cand forma este minimizata. Proprietatea KeyPreview (de tip boolean) Se refera la modul de gestiune a evenimentelor referitoare la utilizarea tastaturii (OnKeyDown, OnKeyPress si OnKeyUp). Daca pentru aceasta proprietate se alege valoarea True, atunci evenimentele referitoare la tastatura sunt gestionate de forma actuala, si nu de componentele asezate pe forma, chiar daca in momentul respectiv in focar se aflaocomponenta. De exemplu, sa presupunem ca forma contine un buton de comanda care este in focar. Daca utilizatorul apasaotasta, evenimentele aferente tastarii vor fi gestionate de procedurile formei si nu de procedurile butonului de comanda. Daca proprietatea este initializata cu valoarea False, care este si valoarea implicita, atunci evenimentele referitoare la tastare vor fi gestionate de procedurile componentei active, si nu de procedurile formei. Proprietatile Left si Top (de tip integer) Stabilesc abscisa, respectiv ordonata: •Formei fata de coltul stanga sus al ecranului; •Componentei fata de coltul stanga sau al formei proprietar; •Componentei fata de coltul stanga sus al unei componente de tip container. Valorile acestor proprietati sunt date in puncte. Proprietatea Menu (de tip TmainMenu) Stabileste componenta de meniu principal care este utilizat de forma la un moment dat. In perioada de elaborare a proiectului aceasta proprietate este initializata automat cu prima componenta MainMenu asezata pe forma; in executie valoarea acestei proprietati poate fi modificata, printr-oinstructiune de atribuire, astfel caoforma poate sa foloseasca mai multe componente MainMenu. Proprietatea Name Numele componentei. Orice componenta trebuie sa aiba un nume unic. Proprietatea ObjectMenuItem Se utilizeaza pentru a afla sau a precizaooptiune dintr-un meniu care devine activa sau inactiva atunci cand un obiect OLE de pe formular este selectat sau deselectat. Proprietatea ParentBidiMode(boolean) Stabileste daca controlul foloseste aceeasi valoare pentru BidiMode ca si parintele. Proprietatea ParentFont(boolean) Stabileste daca controlul foloseste acelasi font ca si parintele Proprietatea PixelPerInch Se utilizeaza in timpul rularii programului pentru a modifica scara de marire a formei la rezolutia curenta. Daca valoarea este modificata fata de valoarea implicita, forma nu va avea aceleasi proportii la diferite rezolutii. Pentru a avea efect trebuie ca proprietatea Scaled sa fie true. Proprietatea PopupMenu (de tip TpopupMenu) Identifica componenta de meniu flotant care este utilizata de forma la un moment dat. Se mentioneaza faptul ca aceasta propeietate nu este initializata automat cu componenta PopupMenu asezata pe forma. In executie valoarea acestei proprietatipoate fi modificata, printr-oinstructiune de atribuire, astfel caoforma poate sa foloseasca mai multe componente PopupMenu. Proprietatea Position Se refera la dimensiunea formei si al locul de plasare a acesteia la executie, fata de locul si dimensiunea care au fost utilizate in momentul realizarii proiectului. Valorile posibile sunt: Valoare Semnificatie poDesigned Forma va avea aceeasi pozitie si dimensiuni ca in momentul elaborarii proiectului. poDefault Pozitia si dimensiunea ferestrei vor fi stabilite de catre Windows poDefaultPosOnly Pozitia este stabilita de catre Windows, se pastreaza dimensiunile. poDefaultSizeOnly Pozitia este pastrata, Windows-ul alege dimensiunile. poScreenCenter Dimensiunile ferestrei se pastreaza, plasandu-se in centrul ecranului. Se fac ajustari pentru aplicatiile multimonitor. po Dimensiunile ferestrei se pastreaza, plasandu-se in centrul ecranului. Nu se fac ajustari pentru aplicatiile multimonitor. PoMainFormCenter Dimensiunile ferestrei se pastreaza, plasandu-se in centrul ferestrei principale a aplicatiei. Nu se fac ajustari pentru aplicatiile multimonitor. PoOwnerFormCenter Dimensiunile ferestrei se pastreaza, plasandu-se in centrul ferestrei specificate de proprietatea Owner. Proprietatea PrintScale Se utilizeaza pentru a afla sau stabili proportiile ferestrei tiparite. Valorile posibile sunt: Valoare Semnificatie poNone Nu se scaleaza deloc. poProportional Fereastra este scalata astfel incat imaginea tiparita are aproximativ aceeasi dimensiune ca si pe ecran. poPrintToFit Forma este tiparita folosind aceleasi proportii ca pe ecran, dar modificate astfel incat sa incapa pe pagina. Proprietatea Scaled Specifica daca forma va fi redimensionata in functie de valoarea PixelsPerInch Proprietatea ShowHint Daca are valoarea true atunci va fi afisataoscurta informatie(Hint) despre obiectul deasupra caruia s-a oprit mouse-ul. Proprietatea Tag Utilizata pentru memorarea unei valori intregi. Nu are un rol predestinat. Proprietatea UseDockManager Stabileste daca se utilizeaza un manager pentru operatia de drag-and-dock. Proprietatea Visible Daca este true atunci componenta este vizibila. Proprietatea WindowMenu Se foloseste pentru a alfa sau stabili ce meniu se utilizeaza pentruofereastra parinte in cazul aplicatiilor MDI(multiple document interface). Proprietatea WindowState Se refera la modul de afisare pe ecran a ferestrei. Poate avea urmatoarele valori Valori Semnificatie wsNormal Fereastra este afisata normal. wsMinimized Fereastra este afisata miminizata wsMaximized Fereastra este afisata maximizata. Metode Metoda BringToFront Aduce forma in fata. Metoda Close Se utilizeaza pentru inchiderea formei. Metoda Hide Ascunde forma. Metoda Refresh, Repaint Redeseneaza forma. Metoda ScaledBy(M, D:integer) Scaleaza toate obiectele de pe forma de M/D ori. Spre exemplu daca M=15 si D=7 dimensiunile tuturor componentelor se vor inmulti cu valoarea 15/7, dimensiunile fonturilor vor fi modificate de asemenea. Metoda SendToBack Trimite forma in spatele tuturor ferestrelor existente pe ecran. Metoda SetFocus Se utilizeaza pentru a selecta obiectul(controlul). Metoda Show Face vizibila forma. Evenimente Pentru fiecare dintre evenimentele prezentate mai jos Delphi-ul ne permite sa scriemo rutina care sa trateze evenimentul respectiv. Daca in Object Inspector executam dublu clic pe unul dintre evenimente Delphi-ul va deschide editorul de cod in care a scris deja antetul procedurii care va trata evenimentul, noi urmand sa scriem partea de cod care va trata evenimentul. Procedura de tratare a evenimentului va avea cel putin un parametru Sender:TObject care ne va indica cine a generat evenimentul, parametru care in general nu e folosit. Daca mai sunt necesari anumiti parametri pentru a trata evenimentul atunci acestia vor fi inclusi, spre exemplu pentru evenimentul OnKeyPress, care apare la apasarea unei taste, va fi transmis ca parametru si tasta(caracterul) care a care a fost apasata. Evenimentul OnActivate Apare atunci cand forma devine activa. Evenimentul OnCanResize Apare atunci cand se redimensioneaza controlul. Avem posibilitatea sa stabilim noile dimensiuni (NewWidth, NewHeight :Integer) si sa stabilim daca suntem de acord cu redimensionarea (Resize:Boolean) Evenimentul OnClick Apare atunci cand utilizatorul executa clic pe forma. Evenimentul OnClose Apare la inchiderea formei. Modificand parametrul Action avem posibilitatea de a decide ce se va executa. Parametrul Action poate avea valorile: Valoare Descriere caNone Forma nu are voie sa se inchida, deci nu se intampla nimic. caHide Forma va fi ascunsa. Aplicatiaomai poate accesa. caFree Forma este inchisa, iar memoria alocata ei va fi eliberata caMinimize Forma va fi minimizata. Evenimentul OnCloseQuery Apare cand metoda Close a fost apelata. Prin modificarea parametrului CanClose:Boolean decidem daca forma se poate inchide sau nu. Evenimentul OnConstrainedResize Apare imediat dupa evenimentul OnCanResize. Se utilizeaza pentru aplicarea limitarilor dimensiunilor, parametrii MinWidth, MinHeight, MaxWidth, MaxHeight stabilind lungimea minima, inaltimea minima, lungimea maxima, inaltimea maxima. La iesirea din procedura de tratare a evenimentului vor fi aplicate constrangerile si se vor obtine noile dimensiuni, dupa care va apare evenimentul OnResize care va permite ajustarile finale. Evenimentul OnContextPopup Apare la clic dreapta. Parametrul MousePos:Tpoint ne va indica pozitia mouse-ului , iar valoare pe careovom atribui parametrului Handle:Boolean va decide daca va fi afisat meniul(daca Handle=false, si proprietatea AutoPopup=true) sau daca nu se va executa nimic (Handle=true). Evenimentul OnCreate Apare la crearea formei. Evenimentul OnDblClick Apare atunci cand utilizatorul executa dubclu clic pe forma. Evenimentul OnDeactivate Apare cand forma pierde focusul. Evenimentul OnDestroy Apare cand forma este distrusa. Evenimentul OnDockDrop Apare cand un obiect este depus pe forma prin operatia de drag-and-dock. Ca parametri vom avea Source care ne va indica de unde a fost luat obiectul, si pozitia la care a fost lasat X, Y. Evenimentul OnDockOver Apare cand un obiect este tras peste forma pentruooperatie de drag-and-dock. Ca parametri vom avea Source care ne va indica de unde a fost luat obiectul, pozitia la care se afla X, Y si Accept care daca are valoarea true se accepta operatia, altfel nu. Evenimentul OnDragDrop Apare cand utilizatorul da drumul obiectului adus prin operatia de drag-and-drop. Ca parametri vom avea Source care ne va indica de unde a fost luat obiectul, si pozitia la care a fost lasat X, Y. Evenimentul OnDragOver Apare cand un obiect este tras peste forma pentruooperatie de drag-and-drop. Ca parametri vom avea Source care ne va indica de unde a fost luat obiectul, pozitia la care se afla X, Y si Accept care daca are valoarea true se accepta operatia, altfel nu. Evenimentul OnEndDock Apare cand operatia de tragere s-a terminat. Se utilizeaza pentru a trata situatia in care operatia de drag-and-dock s-a terminat. Evenimentul OnGetSiteInfo Apare inainte de OnDockDrop daca proprietate DockSite este true. Evenimentul OnHelp Apare cand forma primesteocerere de ajutor (Help). Evenimentul OnHide Apare atunci cand forma este ascunsa(spre exemplu daca Visible ia valoarea false) Evenimentul OnKeyDown Apare la apasarea unei taste, daca componenta(in acest caz forma) este selectata. Parametrul Key ne da codul tastei apasate, iar parametrul Shift, care poate avea valorile ssShift, ssAlt, ssCtrl, ne indica care dintre tastele Shift, Ctrl sau Alt a mai fost apasata odata 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 daca utilizatorul apasaotasta care genereaza un singur caracter. Parametrul Key contine caracterul tastei apasate. Daca a fost apasataocombinatie de taste, spre ex. Shift+F1, nu provoaca acest eveniment. Evenimentul OnKeyUp Apare la eliberarea unei taste, daca componenta(in acest caz forma) este selectata. Parametrul Key ne da codul tastei apasate, iar parametrul Shift ne indica care dintre tastele Shift, Ctrl sau Alt a mai fost apasata odata 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 apasarea unui buton al mouse-ului. Parametrul Button poate avea valorile mbLeft, mbRight, mbMiddle si ne indica care dintre butoanele mouse-ului au fost apasate. Parametrul Shift ne indica care dintre butoanele Ctrl, Shift sau Alt au fost apasate, iar parametrii X, Y ne indica pozitia mouse-ului. Evenimentul OnMouseMove Apare la miscarea mouse-ului peste un control(in acest caz forma). Parametrul Shift ne indica care dintre tastele Shift, Alt, Ctrl au fost apasate, iar parametrii X, Y ne indica pozitia mouse-ului. Evenimentul OnMouseUp Apare la eliberarea unui buton al mouse-ului. Parametrul Button poate avea valorile mbLeft, mbRight, mbMiddle si ne indica care dintre butoanele mouse-ului au fost apasate. Parametrul Shift ne indica care dintre butoanele Ctrl, Shift sau Alt au fost apasate, iar parametrii X, Y ne indica pozitia mouse-ului. Evenimentul OnMouseWheel Apare cand rotita mouse-ului este rotita, daca evenimentul nu este tratat (parametrul Handle are valoare False) atunci apare evenimentul OnMouseWheelUp sau evenimentul OnMouseWheelDown, in functie de directia in care este invartita rotita. Parametrul Shift ne indica care dintre tastele Ctlr, Alt sau Shift au fost apasate, parametrul WheelDelta ne indica de cate ori a fost invartita rotita. Evenimentul OnMouseWheelDown Apare la invartirea rotitei in jos, daca evenimentul OnMouseWheel nu a fost tratat. Procedura are aceesi parametri ca si cea ce trateaza evenimentul OnMouseWheel Evenimentul OnMouseWheelUp Apare la invartirea rotitei in sus, daca evenimentul OnMouseWheel nu a fost tratat. Procedura are aceesi parametri ca si cea ce trateaza evenimentul OnMouseWheel Evenimentul OnPaint Apare atunci cand forma este redesenata. Evenimentul OnResize Apare la redimensionarea formei. Evenimentul OnShortCut Apare la apasarea unei taste inainte de evenimentul OnKeyDown. Se utilizeaza pentru a trata short-cut-urile inainte de a trata apasarile obisnuite de taste. Evenimentul OnShow Apare atunci cand forma este facuta vizibila. Evenimentul OnStartDock Apare atunci cand utilizatorul incepe sa traga un obiect peste control, iar proprietatea DragKind are valoarea dkDock. Evenimentul OnUnDock Apare atunci cand utilizatorul incearca sa ia un obiect ce se afla pe forma. Parametrul Client ne indica obiectul ce va fi luat, parametrul NewTarget ne indica unde va fi dus obiectul, iar parametrul Allow il folosim pentru a permite operatia (daca ii atribuim true), sau aointerzice. Probleme si intrebari 1. Cum putem face invizibile butoanele sistem? 2. Cum putem realiza o forma de dimensiune 100x100 care sa nu poata fi redimensionata? 3. Scrietioaplicatie care sa afiseze pozitia mouse-ului ca titlu a formei. 4. Scrietioaplicatie care sa se inchida daca se apasa butonul stang al mouse-ului pe forma. 5. Scrietioaplicatie care sa aibaoforma(fereastra) care sa 'fuga' de mouse-ul utilizatorului ori de cate ori acesta ajunge cu mouse-ul pe ea. 4.3 Lectia 3 - Butonul Butonul este des utilizat pentru a initia diverse actiuni la apasare. In Delphi exista trei tipuri de butoane: Imagine Tip buton Descriere Button butonul standard BitBtn denumirea vine de la Bitmap Button si permite asezarea unui bitmap (imagini) in interiorul butonului. Exista posibilitatea de a stabili cateoimagine pentru fiecare stare a butonului: ridicat, apasat, dezactivat. SpeedButton permite adaugarea unei (a unor) imagini care poate (pot) acoperi intreg butonul. Butoanele de acest tip se pot grupa. Deoareceomare parte din proprietatile, metodele si evenimentele butoanelor sunt comune cu cele de la form voi trata doar ceea ce apare nou. 4.3.1 Button(TButton) Se utilizeaza pentru a pune un buton standard pe form. Proprietatile butonului Proprietatea Action Este utilizata pentru centralizarea raspunsurilor la comenzile date de utilizator. Majoritatii componentelor li se poate asociaoactiune, actiunile fiind centralizate si gestionate folosind componenta ActionList din pagina standard. Proprietatea Anchors Se utilizeaza pentru a ne asigura ca obiectul isi pastreaza pozitia relativ la marginile parintelui(a componentei careocontine), chiar daca componenta parinte este redimensionata. Cand parintele este redimensionat obiectul isi pastreaza pozitia relativ la marginile de care a fost ancorat. Proprietatea BidiMode Permite ajustarea modului de afisare si a comportamentului automat atunci cand aplicatia ruleaza intr-ozona in care se citeste de la dreapta la stanga si nu de la stanga la dreapta. Proprietatea Cancel(boolean) Daca are valoarea true atunci la apasarea butonului Escape va avea loc evenimentul OnClick Proprietatea Capiton (de tip string) Specifica un sir de caractere care este afisat pe buton, de exemplu Button1. In cazul componentelor aceasta proprietate desemneaza eticheta atasata componentei. In acest ultim caz litera precedata de caracterul '&' este litera de selectie a componentei (litera de selectie este subliniata si componenta poate fi selectata prin combinatia Alt - litera subliniata). Proprietatea Constraints Se utilizeaza pentru a stabili dimensiunea minima si maxima pentruocomponenta. Aceste dimensiuni nu pot fi depasite. Proprietatea Cursor Stabileste imaginea utilizata pentru reprezentarea cursorului mouse-ului. Pentru selectarea unei imagini se vor folosi diferitele constante predefinite de descriere a cursorului. Valoarea implicita este constanta crDefault. Proprietatea Default Daca are valoarea true atunci la apasarea tastei Enter va avea loc evenimentul OnClick. Proprietatea DragCursor Specifica ce imagine sa fie utilizata pentru buton atunci cand acesta este tras (dragg) Proprietatea DragKind Se foloseste pentru a stabili daca se iau obiecte de pe control(drag) sau se pot pune pe el(dock). Proprietatea DragMode Stabileste daca utilizatorul poate executa operatia de drag(tragere). Daca valoarea proprietatii este dnManual utilizatorul nu poate executa operatia, iar daca valoarea proprietatii este dmAutomatic atunci poate executa operatia de drag. Proprietatea Enabled (de tip boolean) Se refera la accesibilitatea componentei. Daca se alege varianta True, care este si valoarea implicita, atunci componenta va reactiona la diferitele evenimente referitoare la mouse, tastatura si ceas. Daca se alege varianta False, componenta va fi inhibata si nu va raspunde la evenimentele echipamentelor de intrare. Valoarea acestei proprietati de regula este modificata in executie, de exemplu pentru a interzice utilizarea unor butoane de comanda in contextul respectiv. Eticheta unei componente inhibate este afisata cu caractere estompate. O componenta inhibata ulterior poate fi reactivata, moment in care eticheta componentei va fi afisata cu caractere negre. Proprietatea compusa Font Stabileste fontul utilizat la textele care sunt afisate pe obiectul Canvas al formei precum si la textele aferente componentelor asezate pe forma. Fontul utilizat poate fi definit in perioada de elaborare a proiectului, insa poate fi modificat in executie, prin redefinirea subproprietatilor Color (culoare), Height (inaltime), Name (nume), Pitch (latimea caracterelor), Size (dimensiune), sau Style (stil). Proprietatile Height si Width (de tip integer) Sabilesc inaltimea, respectiv latmea formei sau componentei. Aceste valori sunt exprimate in puncte care include si dimensiunile rezervate chenarelor. Proprietatea HelpContext Se foloseste pentru a stabili un numar folosit in apelarea ajutorului(Help) context- senzitiv, pentru a determina care fereastra de ajutor este afisata daca utilizatorul apasa tasta F1. Daca HelpContext are valoarea 0 atunci va fi afisata fereastra de ajutor corespunzatoare parintelui. Proprietatea ModalResult Proprietatea se poate utiliza pentru a inchideofereastra modala (care a fost facuta vizibila cu metoda ShowModal), returnand valoarea din ModalResult in campul ModalResult al ferestrei modale. Nu este necesar sa scriem cod care sa trateze apasarea butonului. Pentru clarificare vezi Exemplul 1. Proprietatea poate avea mai multe valori: Constanta Valoare Ce face mrNone 0 Nimic MrOk idOK Utilizatorul a iesit apasand butonul OK mrCancel idCancel Utilizatorul a iesit apasand butonul CANCEL mrAbort idAbort Utilizatorul a iesit apasand butonul ABORT mrRetry idRetry Utilizatorul a iesit apasand butonul RETRY mrIgnore idIgnore Utilizatorul a iesit apasand butonul IGNORE MrYes idYes Utilizatorul a iesit apasand butonul YES MrNo idNo Utilizatorul a iesit apasand butonul NO Proprietatea ParentShowHint(boolean) Se utilizeaza pentru a ne asigura ca fie toate componentele afiseaza Hint-ul fie toate nu il afiseaza. Daca ParentShowHint e true atunci obiectul foloseste ShowHint-ul parintelui, altfel decizia de a afisa Hint-ul va fi luata in functie de ShowHint-ul propriu. Proprietatea TabOrder Poate lua valori in intervalul -1..32767 si stabileste la a cata apasare a tastei Tab se ajunge la obiectul(controlul) respectiv. Primul obiect adaugat are valoarea proprietatii TabOrder 0, urmatorul 1, al treilea 2 s.a.m.d. Proprietatea TabStop(boolean) Se foloseste pentru a permite sau interzice accesul la control prin folosirea tastei Tab. Metode Metoda Click Simuleaza apasarea butonului. Evenimente Evenimentul OnEnter Apare atunci cand controlul(in cazul nostru butonul) primeste focus-ul, spre exemplu cand se ajunge cu Tab pe el. Evenimentul OnExit Apare atunci cand controlul pierde focus-ul, spre exemplu cand un alt control de pe fereastra primeste focus-ul. Pentru lamuriri vezi exemplul 2. Exemple Exemplul 1 Urmatoarea aplicatie va folosi proprietatea ModalResult a butonului. Creationoua aplicatie care are doua form-uri(ferestre): Form1 si Form2. Pe Form1 puneti un buton a carui 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 puneti doua butoane, unul avand ModalResult=mrOk, iar celalalt avand ModalResult=mrNo. Compilati, lansati in executie si testati functionarea programului apasand succesiv pe cele doua butoane din fereastra a doua(Form2). Exemplul 2 Pentru a ilustra folosirea evenimentelor OnEnter si OnExit creationoua aplicatie pe a carei fereastra puneti doua butoane: Button1 si Button2, iar pentru Button2 scrieti codul urmator pentru tratarea evenimentelor OnEnter si OnExit: procedure TForm1.Button2Enter(Sender: TObject); begin button2.Caption:='Enter'; end; procedure TForm1.Button2Exit(Sender: TObject); begin button2.Caption:='Exit'; end; Compilati programul, lansati-l in executie dupa care treceti de la un buton la altul folosind tasta Tab. 4.3.2 BitBtn(TBitBtn) Are aceleasi proprietati, metode si evenimente ca si butonul clasic, in plus adaugandu- se posibilitatea de a aveaoimagine(bitmap) pe buton. Proprietati Proprietatea Glyph Care stabileste ce imagine va fi afisata pe buton. Putem avea maxim patru imagini in fisierul bitmap, toate imaginile fiind de aceeasi dimensiune, asezate pe aceeasi linie una langa cealalta. Pe buton va fi afisata una dintre imagini in functie de starea butonului. Pozitia imaginii Starea butonului Descriere Prima Sus Aceasta imagine apare daca butonul e in pozitia ridicat. Daca nu exista alte imagini atunci aceasta imagine este utilizata si pentru celelalte stari. A doua Dezactivat Apare daca butonul nu poate fi selectat (proprietatea enable = false) A treia Apasat Apare cand s-a facut clic pe buton. A patra Jos Apare daca butonul a ramas jos. Proprietate Kind Stabileste ce imagine se va afisa pe buton, precum si valoarea ModalResult. Poate avea urmatoarele valori: Valoare Buton Descriere bkCustom Va fi afisata imaginea din Glyph, valoarea ModalResult trebuie stabilita manual Se poate utiliza pentru anularea unei actiuni. bkAbort bkAll Este recomandat a se utiliza pentru selectia a mai multor optiuni. bkCancel Valoarea proprietatii Cancel este setata automat la valoarea true, ModalResult va avea valoarea mrCancel La apasarea butonului fereastra se va inchide. Valoarea bkClose proprietatii Default este true. La apasarea butonului va fi apelat Help-ul programului. bkHelp Este recomandat a se utiliza daca a aparut o eroare iar bkIgnore utilizatorul doreste sa continue operatia bkNo Valoarea proprietatii Cancel este setata automat la valoarea true, ModalResult va avea valoarea mrNo bkOk Valoarea proprietatii Default este pusa automat pe valoarea true, ModalResult va avea valoarea mrOk Este recomandat a se utiliza daca a aparut o eroare iar bkRetry utilizatorul doreste sa reincerce operatia. bkYes Valoarea proprietatii Default este pusa automat pe valoarea true, ModalResult va avea valoarea mrOk Proprietatea Layout Stabileste pozitia imaginii pe buton. Poate avea urmatoarele valori: Valoare Descriere blGlyphLeft Pune imaginea in partea stanga a textului. BlGlyphRight Pune imaginea in partea dreapta a textului. BlGlyphTop Pune imaginea deasupra textului. BlGlyphBottom Pune imaginea sub text. Proprietatea Margin Stabileste distanta, in pixeli, intre imagine si marginea butonului. Daca valoarea este - 1 (valoare implicita) atunci imaginea si textul vor fi centrate Proprietatea NumGlyphs Indica numarul de imagini care se afla in bitmap-ul memorat in Glyph. Numarul de imagini poate fi intre 1(valoare implicita) si 4. Proprietatea Spacing Stabileste numarul de pixeli dintre imagine si text, implicit are valoarea 4. Daca are valoarea -1 atunci textul va fi centrat intre imagine si marginea butonului. Proprietatea Style Determina modul in care este afisata imaginea pe buton. Poate avea urmatoarele valori: Valoare Descriere bsAutoDetect Daca folosim Windows 3.1 bitmap-ul va avea infatisarea din Windows 3.1, altfel va avea noua infatisare. bsWin31 Va folosi infatisarea standard din Windows 3.1 bsNew Va folosi noua infatisare 4.3.3 SpeedButton(TSpeedButton) Fata de butonul clasic TSpeedButton-ul introduce proprietati care sa-i permita lucrul in grupuri de butoane, spre exemplu in bare de butoane. Proprietati Proprietatea AllowAllUp Determina daca toate butoanele ce fac parte dintr-un grup pot sa fie toate ridicate simultan sau nu. Daca are valoare true atunci butoanele ce fac parte din acelasi grup pot fi toate ridicate, altfel unul dintre butoane va fi apasat, iar la apasarea unui alt buton butonul apasat se va ridica. Daca campul GroupIndex este 0 atunci AllowAllUp nu are nici un efect. Proprietatea Down Se foloseste pentru a afla daca butonul este apasat sau nu. Proprietatea este valabila doar daca proprietatea GroupIndex este diferita de 0. Proprietatea Flat Daca are valoarea true butonul nu va fi afisat 3D. Daca proprietatea are valoarea true putem folosi imagini(bitmap) care sa ilustreze starea butonului. Proprietatea GroupIndex Permite sa selectam din ce grup face parte butonul. Daca are valoarea 0 atunci fiecare buton actioneaza separat, iar daca areovaloare mai mare ca 0 atunci desemneaza numarul grupului din care face parte butonul. Daca utilizatorul apasa un buton din grup acesta ramane apasat pana cand un alt buton din grup va fi apasat. Proprietatea Transparent Specifica daca fundalul butonului este transparent sau nu. Intrebari si probleme 1. Cum procedam ca un buton sa nu poata fi selectat decat cu mouse-ul?. 2. Sa se scrieoaplicatie care afisandofereastra pe care se afla un buton care 'fuge' ori de cate ori utilizatorul a ajuns cu mouse-ul pe el, dar nu poate iesi in afara ferestrei. 3. Sa se scrieoaplicatie care afiseazaofereastra pe care se afla trei butoane din care unul singur poate fi selectat la un moment dat si care afiseaza un mesaj, ca titlu al ferestrei, in functie de ce buton este apasat. 4. Sa se scrieoaplicatie care are butoane ce au alta culoare decat a ferestrei. 4.4 Lectia 4 -Edit Se utilizeaza pentru a permite programului sa preia un text de la utilizator. Se poate utiliza si pentru a afisa un text. Proprietati Proprietatea AutoFocus Daca are valoarea true atunci textul va fi selectat cand controlul va primi focus-ul. Se pune pe valoarea true daca e mai probabil ca utilizatorul sa inlocuiasca textul existent decat sa adauge ceva la el. Proprietatea AutoSize Daca are valoarea true atunci controlul isi va modifica inaltimea daca inaltimea textului se schimba, daca nu exista posibilitatea ca textul sa fie trunchiat. Proprietatea BorderStyle Determina daca controlul va aveaobordura, si atunci are valoarea bsSingle, sau nu, si atunci are valoarea bsNone. Proprietatea CharCase Determina ce fel de litere se pot folosi(mari, mici sau combinat). Proprietatea poate lua urmatoarele valori: Valoare Descriere ecLowerCase Literele sunt transformate in litere mici ecNormal Se pot utiliza atat litere mari cat si litere mici ecUpperCase Literele sunt transformate in litere mari Proprietatea HideSelection Determina daca textul ramane selectat atunci cand controlul pierde focusul. Daca are valoare false atunci la pierderea focusului textul ramane selectat. Se poate accesa textul selectat prin intermediul proprietatii SelText. Pozitia de inceput a selectiei este memorata in proprietatea SelStart, iar lungimea textului selectat e memorata in SelLength. Proprietatile ImeMode si ImeName Se utilizeaza pentru a stabili anumite optiuni pentru editorul IME ce se utilizeaza pentru limbile asiatice. Proprietatea MaxLength Stabileste numarul maxim de caractere ce poate fi introdus. Daca are valoarea 0 atunci nu exista nici un fel de limitare. Proprietatea OEMConvert Daca are valoare true atunci caracterelor vor fi 'traduse' din ANSI in OEM si invers pentru a elimina caracterele ce nu pot fi folosite la denumirea unui fisier. Proprietatile ParentBiDiMode, ParentColor, ParentCtl3D, ParentFont, ParentShowHint Au valoarea true daca se doreste ca proprietatea a carei nume apare dupa Parent sa aiba aceeasi valoare ca si a parintelui(cu a componentei pe care se afla asezat) Proprietatea PasswordChar Specifica ce caracter se va afisa daca se doreste citirea unei parole care nu trebuie sa apara pe ecran. Daca are valoarea #0 atunci caracterele se vor afisa normal. Proprietatea ReadOnly Daca are valoarea true nu se va putea modifica continutul Edit-ului. Proprietatea Text Contine textul ce se afiseaza in Edit. Proprietatea poate fi utilizata pentru a prelua ceea ce a tastat utilizatorul.
|