You are on page 1of 53

3.

MEDII VIZUALE DE PROGRAMARE ORIENTATE OBIECT


3.1. Introducere n C++ Builder C++ Builder este un mediu de programare vizual, orientat pe obiect, pentru crearea rapid a unor aplicaii uor de manevrat, cu scop general, destinate sistemelor de operare din familia Windows. O facilitate deosebit permis de acest mediu de programare este aceea c aplicaii dintre cele mai complexe pot fi create scriind un minim de cod, iar pentru anumite aplicaii simple nici nu este nevoie de tastatur deoarece codul programului poate fi generat numai cu ajutorul mouse-ului.
Un avantaj al folosirii sistemului C++ Builder este acela c el creeaz direct fiiere executabile, care pot fi lansate n execuie chiar i n cazul n care pe calculatorul respectiv nu este instalat acest mediu de programare.

C++ Builder conine peste 100 de componente utilizate n dezvoltarea aplicaiilor care sunt organizate n diferite pagini. Componentele pot fi vizuale sau nevizuale. O component este vizual dac ea este sau va fi vizibil n timpul execuiei programului (de exemplu butoane, linii de editare). O component este nevizual dac n perioada de elaborare a proiectului ea apare pe form, dar n momentul execuiei devine invizibil (de exemplu ceasul sistemului). Exist componente care sunt invizibile pn n momentul n care sunt apelate prin diferite metode, ca de exemplu ferestrele standard de dialog. Fiecare component a acestui mediu de programare este prevzut cu diferite atribute prin care se permite controlul ei n proiectare i n execuie. Componentele pot fi prevzute i cu diferite metode prin care se poate coordona comportarea componentei n momentele n care se declaneaz un anumit eveniment (de exemplu efectuarea unui clic cu mouse-ul pe componenta respectiv).
Realizarea unei interfee grafice
O interfa grafic utilizator are dou pri separate. Ea utilizeaz rutine grafice complexe pentru a afia (i restaura) imagini pe ecranul calculatorului. O alt caracteristic a unei GUI este aceea c ea controleaz comportamentul mouse-ului i a altor dispozitive de intrare pe suprafaa grafic. Toate detaliile de programare sunt ascunse programatorului, ele fiind implementate de ctre sistemul de operare. Ca programator nu trebuie s tim cum sunt implementate funciile care permit utilizarea mouse-ului, a tastaturii .a.m.d. Pentru a crea interfaa grafic a fiecrui program exist API (Application Programming Interface). Exist multe diferene ntre programele ce folosesc GUI i programele ce ruleaz n fereastra DOS. Cu toate c n ambele variante programul pornete dintr-un anume punct, exist multe alte diferene. Programele rulate n fereastr DOS nu afieaz imagini grafice, astfel c au intrarea utilizator dat de ctre programator de la nceput. Secvena de operaii este stabilit de la nceput de ctre programator i utilizatorul nu poate interveni. Cu aplicaiile GUI, utilizatorul poate opta asupra secvenei pe care o va parcurge programul. Se pot introduce meniuri prin care utilizatorul selecteaz diverse aciuni. Tratarea evenimentelor ntr-un program cu suprafa GUI, toate componentele ateapt anumite evenimente (click-uri de mouse, apsri de taste, etc.). Aceste tipuri de evenimente sunt considerate evenimente externe. Exist ns i alte tipuri de evenimente generate intern de ctre sistemul de operare, ca de exemplu ceasul intern, interaciunea cu alte programe n cazul programrii concurente, etc. Programul rspunde la aceste tipuri de evenimente utiliznd un handler de eveniment (event handler). Un handler de eveniment este o poriune de cod care nu face altceva nimic dect s atepte producerea unui eveniment. 18

3.2. Ce este C++ Builder?


Dac dorim o scurt definiie, C++ Builder este versiunea RAD (Rapid Application Development) a mediului Borland C pentru Windows. Acesta pune la dispoziie o interfa mbuntit i multe trsturi automatizate, care faciliteaz dezvoltarea aplicaiilor.

C++ Builder este un mediu de programare vizual, orientat obiect, pentru dezvoltare rapid de aplicaii (RAD) cu scop general i aplicaii client/server pentru Windows. Folosind C++ Builder putei
crea aplicaii Windows eficiente scriind un minim de cod. Facilitile folosite de acesta sunt :

nalta productivitate a mediului de dezvoltare


Mediul de dezvoltare integrat (IDE) C++ Builder furnizeaz : Visual Form Designer; Object Inspector; Component Palette; Project Manager; un editor ; un depanator. care dau posibilitatea utilizatorului s dezvolte rapid aplicai avnd totodat un control complet asupra codului i resurselor.

Proiectarea drag-and drop


Utilizatorul poate crea aplicaii prin simpla tragere a componentelor din Component Palette pe Form Designer i apoi setarea proprietilor din Object Inspector. Handler-ele de evenimente sunt automat create, iar codul lor este complet accesibil. Acest mod de proiectare a unei aplicaii nu restricioneaz n nici un fel accesul programatorului la codul surs, o aplicaie putnd fi scris i fr a folosi componente vizuale.

Proprieti, metode i evenimente


Dezvoltarea rapid a aplicaiilor nseamn support pentru proprietile, metodele i evenimentele obiectelor (PME). Proprietiile permit setarea uoar a caracteristicilor componentelor. Metodele execut aciuni asupra obiectelor. Evenimetele permit ca aplicaia s rspund la mesajele Windows, sau la schimbri de stare a obiectelor. Folosirea modelului PME furnizeaz un robust i intuitiv mediu de dezvoltare pentru aplicaii Windows.

C++ Builder Help


Mediul C++ Builder ofer un ghid practic, care conine peste 3000 de pagini de documntaie despre IDE, VCL, baze de date i tehnici de programare.

Codurile surs pentru VCL


C++ Builder pune la dispoziie codurile surs pentru VCL, furniznd astfel o unic privire nuntrul modului n care C++ Builder lucreaz. VCL furnizeaz peste 100 de componente reutilizabile care ajut programatorul s construiasc aplicaii robuste ntr-un timp scurt. Aceste componente pot fi modificate pentru a corespunde necesitilor din cele mai diverse. C++ Builder include o suit complet de controale Windows : TreeView, Trackbars, PregressBars, Toolbars, RichEdit, ListViews, ImageLists, StatusBar etc. Totodat C++ Builder include suport pe 32 de bii pentru numele lungi de fiiere. 19

Elementele mediului de dezvoltare (IDE) C++

Builder sunt :

A. Main Menu

File Edit Search View Project Run Component DataBase Tool Options Help

pentru a deschide, crea, salva, inchide project-uri i fiiere. pentru prelucrarea de texte i componente. pentru localizare text, erori, obiecte, variabile, unit-uri, n editorul de cod. pentru a afia, sau ascunde elemente ale mediului . pentru a compila aplicaia. pentru a executa i depana o aplicie. pentru a crea sau instala o component. pentru manipulare de baze de date pentru a rula programele utilitare disponibile, fr a prsi C++ Builder. pentru a controla comportamentul mediului de dezvoltare. pentru a obine ajutor.

B. Forma
ntreaga parte vizibil a unei aplicaii este construit pe un obiect special numit form (ca cea din figura urmtoare). O form liber este creat de fiecare dat cnd este lansat n execuie mediul C++ Builder. O aplicaie poate avea mai multe forme. Adugarea unei noi forme unei aplicaii se face selectnd comanda New Form din meniul File. Pe form se pot aeza i aranja componente vizuale i non-vizuale care alctuiesc interfaa cu utilizatorul. Fiecrei forme i sunt asociate dou fiiere cu extensiile .cpp i .h (n cazul formei de mai sus unit1.CPP, unit1.h ).

C. Code Editor
Ca orice limbaj de programare C++ Builder are o fereastr unde programatorul poate scrie codul unei aplicaii. Aceasta este un editor ASCII complet i poate deschide mai multe fiiere simultan.

20

D. Toolbar-ul
Toolbar-ul, nu este altceva, dect o scurttur la comenzile aflate n MainMenu. n varianta implicit comenzile pe care le conine sunt cele specificate n figura de mai jos. Save all Save Open New Open project Add file to project Add file to project Help

View unit View form Comutare unit/form New form Run Pause Trace into Step over

E. Paleta cu componente

Mai nti s definim noiunea de component. Componentele sunt elemente pe care le folosii pentru a creea aplicaii C++ Builder. O component este de fapt un element de tip UI (user interface). Pot fi vizuale (de exemplu butoanele, cutiile de dialog), sau pot fi non-vizuale (de exemplu timer-ul). Spunem despre o component c este vizibil, sau va fi vizibil la momentul execuiei, iar o component este non-vizual dac la momentul proiectrii aplicaiei apare pe form ca un desen, iar la momentul execuiei aplicaiei devine 21

invizibil. Fiecare component are atribute care permic controlul aplicaiei. Componentele sunt grupate pe pagini. O component special este i forma care are ataate proprieti, metode, evenimente.. Programatorul poate crea noi componente i pagini de componente.

F. Object inspector
Object inspector face legtura dintre interfaa aplicaiei i codul scris de programator i are dou funcii : a. seteaz proprietile componentelor de pe form b. creaz i ajut la navigarea printre handler-ele de evenimente. Un handler de evenimente se execut n momentul n care apare un eveniment (apsarea unei taste, un click de mouse, etc.). n partea de sus se afl Object selector care conine toate componentele de pe form mpreun cu tipul lor. Object inspector are dou pagini: a. Properties page Aceast pagin seteaz proprietile unei componente i anume, dimensiunile ei, poziia n cadrul formei, fonturi folosite, numele ei, etc. Alte proprieti pot fi setate n timpul execuiei programului. b. Event page Aceast pagin permite legarea unei componente la evenimentele programului. Prin executarea unui dublu click pe unul dintre evenimente C++ Builder creaz un handler de eveniment care de fapt este o metod ataat unei clase i care se va executa cnd apare un eveniment particular.

G. Proiect Manager
Aplicaiile C++ Builder sunt denumite proiecte (projects). Un proiect este un grup de fiiere care mpreun alctuiesc aplicaia. Fiecare fiier reprezint, pentru aplicaia din care face parte, o resurs care necesit configurri speciale pentru a putea fi legat la configuraia final (dll sau exe). Pe msur ce aplicaia crete, numrul de fiiere care vor fi adugate este tot mai mare (pot fi adugate fiiere multimedia, baze de 22

date, etc.). C++ Builder manipuleaz aceste fiiere i totodat pune la dispoziia programatorului un instrument care i permite acestuia s navigheze uor printrefiierele care alctuiesc un proiect. Se pot vizualiza componentele unui proiect de la opiunea Proiect manager din meniul View.

Combinaia dintre bara de acces rapid (speed bar) i alte ajutoare din program, cum ar fi Inspectorul de obiecte (Object Inspector) difereniaz C++ Builder de alte medii. Bara de acces rapid este mprit n dou seciuni. Jumtatea din stnga conine butoanele obinuite pe care le putei gsi n orice aplicaie . n partea dreapt a barei de acces rapid se pot vedea mai multe etichete. Fiecare pagin astfel etichetat conine una sau mai multe componente. n esen o component este o parte din codul de aplicaie predefinit. Inspectorul de obiecte apare n partea stng a ecranului, imediat sub bara de acces rapid. Fereastra inspectorului de obiecte este constituit din dou pagini de etichete. Prima pagin permite schimbarea proprietii oricrui element plasat pe un formular sau chiar a formularului nsui. Cea de-a doua pagin permite atribuirea unor anumite proceduri evenimentelor asociate cu un component. n dreapta inspectorului de obiecte se gsete un formular gol. Mediul C++ Builder afieaz ntotdeauna un astfel de formular atunci cnd ncepem lucrul la o nou aplicaie. Ca i n cazul altor limbaje de programare, cum ar fi Visual Basic, ncepem aplicaia punnd toate componentele de care avem nevoie pe acest formular, apoi utilizm inspectorul de obiecte pentru a le schimba proprietile i pentru a aduga cod care s rspund unor anumite evenimente. Componentele pot fi deplasate, pot fi adugate sau terse, dup nevoie. Acest mod de funcionare face mediul C++ Builder s semene mai mult cu un desenator de ecran, atunci cnd ncepem s-l folosim. Odat ce dispunem de un formular, putem ncepe s modificm proprietile diferitelor componente plasate pe ecran. Proprietile includ totul de la culorile utilizate pentru afiarea componentei, pn la textul explicativ al unui buton. Toate aceste operaii preced activitatea de scriere a codului propriu-zis. Putem aciona butoanele i putem introduce informaiile n orice controale editabile pe care le-am creat. n acest moment se ncepe adugarea codurilor pentru a face butoanele i meniurile s execute ceea ce dorim, totul ducnd la o aplicaie finisat.

VCL (Visual Component Library)


Istoria VCL
VCL a fost introdus prima dat n Delphi 1.0 este un cadru de dezvoltare constnd din clase i componente folosite pentru a crea aplicaii Delphi. VCL a fost rescris pe 32 de bii ncepnd cu Delphi 2. Aceast tehnologie a fost foarte bine primit pe pia, ulterior utilizatorii exprimdu-i dorina de a li se pune la dispoziie o astfel de unealt bazat ns pe C++, rezultnd astfel C++Builder. VCL este astfel proiectat nct aceste clase pot fi manipulate n interiorul mediului vizual al C++ Builder la momentul proiectrii aplicaiei. Acest mediu difer de alte medii de dezvoltare (Visual C++), unde comportamentul i caracteristicile vizuale ale aplicaiei erau setate la momentul proiectrii aplicaiei. n C++Builder, Delphi comportamentul i caracteristicile vizuale ale aplicaiei pot fi setate i la momentul proiectrii i la momentul execuiei. 23

VCL pentru dezvoltatorii de aplicaii


Acetia i pot crea aplicaii complete interacionnd cu mediul vizual Delphi, C++Builder. Aceste persoane folosesc VCL pentru a-i crea interfaa sau alte elemente ale aplicaiei. Dezvoltatorii de aplicaii trebuie s cunoasc pentru fiecare component care proprieti, metode i evenimente sunt disponibile.

VCL pentru dezvoltatorii de componente


Acetia extind componentele deja create sau dezvolt altele noi. Un dezvoltator de componente trebuie s aib cunotine despre VCL mult mai mari dect ale unui utilizator de componente. Noile componente pot fi create fie n C++Builder fie n Delphi, dar trebuie s funcioneze n amndou.

VCL este alctuit din componente


Din prisma utilizatorului o component este un obiect de cele mai multe ori tras i scos din Component Palette i plasat pe o form, de unde poate fi manipulat prin intermediul proprietilor, metodelor i evenimentelor. Din prisma dezvoltatorului de componente, acestea sunt obiecte C++ sau Object Pascal.

Tipuri de componente
Exist patru tipuri de componente de baz:

1.

Componente standard

Acestea ncapsuleaz comportamentul controalelor standard Windows: TButton, TEdit, TListBox etc. Aceste componente se gsesc pe paginile Standard i Win32 din Component Palette. Fiecare dintre aceste componente arat i se comport ca i controalele Windows pe care le reprezint.

2.

Componente prelucrabile (custom)

Diferena dintre acestea i cele standard este faptul c acestea nu au o metod care s le afieze. Dezvoltatorul de componente trebuie s scrie cod pentru a afia componenta pe o form i pentru a specifica cum trebuie s se comporte cnd utilizatorul interacioneaz cu ea.

3.

Componente grafice

Acestea sunt controale vizuale care nu pot primi focus de la utilizator. Astfel de componente permit afiarea a ceva ctre utilizator, fr s foloseasc nici o resurs sistem. De exemplu TLabel sau Tshape.

4.

Componente non-vizuale

Acestea nu apar pe form la timpul execuiei. Totui la timpul proiectrii unei aplicaii proprietile acestor obiecte pot fi modificate, i se poate furniza cod pentru a rspunde la evenimente. Exemple de astfel de componente sunt TOpenDialog sau TTimer.

PRINCIPALELE MENIURI I COMENZI N SISTEMUL C++ BUILDER

Meniul File (fiiere)


Comanda New Afieaz o fereastr de dialog format din mai multe pagini, prin care se pot crea aplicaii noi, forme noi. 24

Comanda New Application Creaz un nou proiect C++ Builder (deocamdat vid). Prin lansarea n execuie a acestei comenzi vor fi deschise urmtoarele: un nou fiier proiect (Project1.bpr); un fiier surs asociat proiectului (Project1.cpp) un fiier de resurse al proiectului (Proiect1.res) un nou fiier pentru form (Unit.dfm); unitate asociat formei (Unit1.cpp). un fiier header asociat formei (Unit1.h) Aceste denumiri standard pot fi modificate n momentul salvrii fiierelor. Comanda New Form Creeaz o form vid i o nou unitate asociat formei; ele sunt adugate la lista fiierelor proiectului deschis. Comanda New Data Module Adaug un nou modul de date la proiect. n perioada de elaborare a proiectului modulul se deosebete de o form obinuit prin faptul, c nu este prevzut cu o reea de aliniere i culoarea de fond utilizat este alb. Pe modulul de date pot fi plasate numai componente nevizuale. Comanda Open Afieaz o fereatr de dialog, cu ajutorul creia se pot ncrca un proiect, o form, o unitate sau un fiier text existent. Comanda Reopen Afieaz un submeniu, care conine proiectele i unitile utilizate recent. Comanda Save (Ctrl+S) Salveaz toate acele fiiere ale proiectului actual, n care au fost operate diferite modificri. Comanda Save As Salveaz fiierul activ cu un nume diferit sau ntr-o locaie diferit. Comanda Save Project As Salveaz fiierul proiect (de extensie *.BPR) cu un nume diferit sau ntr-o nou locaie. Comanda Save All Salveaz toate fiierele deschise. Comanda Close nchide fiierul actual. Comanda Close All nchide toate fiierele proiectului actual. Comanda Print Tiprete fie pagina activ n editorul de cod, fie forma activ. Comanda Exit nchide proiectul deschis i nchide sistemul C++ Builder.

Meniul View (vizualizare)


Comanda Project Manager Afieaz o fereastr de dialog care conine toate perechile unitate-form utilizate n proiect. Fereastra de dialog este prevzut cu diferite butoane de comand prin care pot fi efectuate diferite operaii de gestiune a fiierelor: 25

adugare de fiier la proiect; ndeprtare de fiier din proiect; vizualizarea listei unitilor i formelor; opiunile proiectului referitoare la forme (forme create automat i forme disponibile).

Comanda Project Source Deschide o nou pagin n editorul de coduri, n care se afieaz codul surs al fiierului proiect (de extensie *.BPR). Comanda Object Inspector (F11) Prin redeschiderea ferestrei inspectorului de obiecte; se folosete atunci, cnd aceast fereastr a fost nchis. Comanda Alignment Pallete Afieaz paleta de aliniere utilizat pentru alinierea reciproc n raport cu forma componentelor. Comanda Browser Afieaz o fereastr de dialog n care sunt date obiectele, unitile i ierarhiile de clase i de metode utilizate n aplicaia actual. Dac comanda este inhibat, atunci aplicaia nu a fost nc compilat. Comanda Breakpoints Afieaz o fereastr de dialog care conine toate punctele de ntrerupere introduse n proiect. Comanda Modules Afieaz lista modulelor ncrcate n memorie n momentul n care proiectul curent este n execuie. Comanda Toggle Form/Unit (F12) Este un comutator prin care se poate cupla ntre forma curent i fiierul unitate (*.CPP) aferent formei. Comanda Units (Ctrl-F12) Afieaz o fereastr de dialog n care sunt date numele fiierului proiect (*.BPR) i numele tuturor fiierelor unitate (*.CPP) utilizate n proiectul actual. Prin aplicarea unui dublu clic fiierul selectat va fi activat n editorul de cod. Comanda Forms (Shift-F12) Afieaz o fereastr de dialog n care sunt date numele tuturor formelor utilizate n proiectul actual. Prin aplicarea unui dublu clic forma selectat va fi activat.

Meniul Project (proiect)


Comanda Add to Project Afieaz o fereastr de dialog, prin care se poate aduga proiectului C++ Builder o unitate existent, mpreun cu formele asociate unitii respective. Comanda Remove From Project ndeprteaz o unitate din proiectul curent. Comanda Add to Repository Afieaz o fereastr de dialog, prin care se poate o form elaborat de utilizator la depozitul de obiecte. Modelul salvat poate fi ulterior utilizat prin comanda File/New. Comanda Compile (Ctrl+F9) Compileaz toate fiierele modificate ale proiectului curent ntr-un fiier executabil (de extensie *.EXE). 26

Comanda Build All Recompileaz toate fiierele proiectului actual, indiferent de faptul c ele au fost modificate sau nu. Comanda Syntax Check Efectueaz verificarea sintactic a fiierelor proiectului actual, ns nu creaz un fiier executabil. Comanda Options Afieaz o fereastr de dialog format din apte pagini, prin care pot fi selectate diferite opiuni referitoare la proiectul actual.

UTILIZAREA INSPECTORULUI DE OBIECTE


Inspectorul de obiecte este prevzut cu dou pagini. Pagina Properties permite stabilirea propietilor componentelor. Pagina Events gestioneaz diferitele evenimente legate de componente. Pagina Properties este prevzut cu dou coloane. n coloana din stnga sunt listate denumirile proprietilor. n coloana din dreapta sunt afiate valorile actuale aferente diverselor proprieti.

FORME
Pentru descrierea formelor pot fi utilizate 38 de proprieti, care pot fi stabilite n perioada de elaborare a proiectului prin intermediul inspectorului de obiecte. Formele pot s reacioneze la 21 de evenimente.

Proprietile formelor
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. Proprietatea AutoScroll (de tip 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. Dac se alege valoarea False, nu se vor ataa automat bare de defilare la form redimensionat. n acest caz ataarea barelor de defilare poate fi realizat prin intermediul proprietilor HorzScrollBar i VertScrollBar. Proprietatea compus BorderIcons Se refer la existena n linia de titlu a formei meniului sistem i butoanelor de minimizare i maximizare. Proprietatea BorderStyle Se refer la stilul chenarului formei. Proprietatea Caption (de tip string) Specific un ir de caractere care este afiat n linia de titlu al formei, de exemplu Form.1. Proprietile ClientHeight i Client Width (de tip integer) Se refer la nlimea i limea zonei client a formei. Aceste valori sunt specificate n puncte. Proprietatea Color (de tip Tcolor = longint) Stabilete culoare de fond a formei. Proprietatea Ctl3D (de tip boolean) Determn dac forma sau componenta are spect tridimensional (pentru True) sau aspect bidimensional (pentru False). 27

Proprietatea Cursor Stabilete imaginea utilizat pentru reprezentarea cursorului de mouse. 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 referitoare 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. 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. Proprietatea FormStyle Stabilete stilul formei. Valorile posibile ale acestei proprieti sunt urmtoarele; Valoare Semnificaie fsMDINormal Forma creaz o fereastr normal (nici MDI copil, nici MDI printe). Valoarea implicit. FsMDIChild Forma creaz o fereastr MDI copil. fsMDIForm Forma creaz o fereastr MDI printe. fsStyOnTop Forma va fi afiat deasupra celorlate forme utilizate n proiect. Proprietile Height i Width (de tip integer) Stabilesc nlimea, respectiv limea formei sau componentei. Aceste valori sunt exprimate n puncte care iincludei dimensiunile rezervate chemarelor. Proprietatea Hint (de tip string) Specific un text explicativ care va afia atunci, cnd cursorul de mouse este aezat deasupra unei forme sau componente. Acest text este afiat numai atunci, 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. Proprietatea Icon Specific simbolul grafic care va fi utilizat atunci, cnd forma este minimizat. Proprietatea Key Preview (de tip boolean) Se refer la mosul de gestiune a eventimentelor 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. Proprietile Left i Top (de tip integer) Stabilesc abscisa, respectiv ordonate: formei fa de colul stnga sus al ecranului; componentei fa de colul stnd sau 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. Proprietatea PopupMenu (de tip TPopupMenu) Identific componenta de meniu flotant care este utilizat de form la un moment dat. Proprietatea Name (de tip string)

28

Permite atribuirea unui nume la o form sau component. Atribuirile de nume sunt realizate automat de sistemul C++ Builder, ns denumirile predefinite (de exemplu Form1, Form2, ) pot fi modificate, codul surs al aplicaiei devenind astfel mai lizibil. Proprietatea ParentFont(de tip booleam) Se refer la modul de selecie al fontului unei componente. Dac se alege varianta True, atunci fontul utilizat de o component este identic cu fontul utilizat de forma proprietar. Dac se alege varianta False, atunci fontul componentei nu va depinde de fontul formei proprietar. Proprietatea Position Se refer la dimensiunea i locul de deplasare a formei n execuie. Proprietatea PrintScale Se refer la modul de tiprire a formei, mai precis la modul de alegere a scalei utilizate n procesul de tiprire. Proprietatea Scaled (de tip boolean) Stabilete modul de dimensionare a formei, n funcie de proprietatea PixelsPerInch. Dac se alege valoarea True, care este i valoarea implicit, atunci proprietatea PixelsPerInch stabilete numrul de puncte care va utiliza ntr-un inch al formei. Dac se alege valoarea False, atunci valoarea specific n proprietatea PixelsPerInch este neglijabil. Proprietatea Tag (de tip longint) Este utilizat att la forme, ct i la componente. Cu ajutorul acestei proprieti se poate aduga o valoare la forme i componente. Aceast proprietate nu are o semnificaie predefinit, poate fi utilizat de exemplu pentru memorarea valorilor ntregi i de tip reper. Proprietatea Visible (de tip boolean) Se refer la vizibilitatea formei. Dac se alege valoarea True, forma va fi vizibil n execuie, iar n cazul alegerii valorii False forma va fi invizibil. Proprietii Visible i se poate atribui valoarea True i prin Intermediul metodelor Show sau ShowModal. Proprietatea WindowMenu (de tip TMenuItem) Este utilizat numai la forme MDI (interfa multidocument) printe, adic la acele forme, pentru care stilul utilizat este fsMDIForm. Cu ajutorul acestei proprieti se desemneaz un element de meniu din linia meniului principal, la care sistemul C++ Builder va aduga automat meniul Window (lista ferestrelor copil deschise n fereastra printe, cu indicarea ferestrei active). Proprietatea WindowState Se refer la modul de afiare pe ecran a formei.

Evenimentele formelor
Evenimentul OnActivate Apare n momentul n care o form ajunge n focar. Procedura ataat acestui eveniment are prototipul urmtor: procedure Tform1.FormActivate (Sender:TObject); begin end; Evenimentul OnClick Apare atunci cnd utilizatorul efectueaz un clic de mouse pe o zon liber a formei. Evenimentul OnDblClick Apare atunci cnd utilizatorul efectueaz un dublu clic de mouse pe o zon liber a formei. Evenimentul OnCloseQuery 29

Apare n momentul n care utilizatorul face o anumit aciune, prin care semnaleaz faptul, c dorete s nchid forma. Procedura ataat acestui eveniment are prototipul urmtor: procedure Tform1.FromCloseQuery (Sender: Tobject; var CanClose: Boolean); begin end; Dac n aceast procedur utilizatorul atribuie parametrul variabil CanClose valoarea True, forma poate fi nchis i n continuare se lanseaz n execuie procedura ataat evenimentului OnClose. Dac variabilei CanClose i se atribuie valoarea False, forma nu poate fi nchis. Evenimentul OnClose Apare n momentul n care utilizatorul a cerut nchiderea formei. Acest eveniment apare dup evenimentul OnCloseQuery. Evenimentul OnCreate Apare n momentul n care se creeaz forma (adic la prima execuie a formei). De regul se folosete iniializarea proprietilor formei i a componentelor aezate pe form. n procesul de creare a unei forme, dac proprietatea de vizibilitate a formei Visible este True, se vor declana urmtoarele evenimente, n ordinea specificat mai jos. OnCreate OnShow OnActivate OnPaint Evenimentul OnDeactivate Apare n momentul n care forma urmeaz s piard focarul, adic atunci, cnd aplicaia folosete mai multe forme i utilizatorului printr-un clic de mouse activeaz o alt form. Evenimentul OnDestroy Apare n momentul n care se distruge forma actual (adic se elibereaz toate resursele ataate formei). n aceast procedur se vor distruge toate acele obiecte, care au fost create n metoda de tratare a evenimentului OnCreate. Evenimentul OnHide Apare n momentul n care forma este ascuns, adic proprietatea de vizibilitate a formei Visible este iniializat cu valoarea False. Evenimentul OnShow Apare n momentul n care forma este afiat, adic proprietatea de vizibilitate a formei Visible este iniializat cu valoarea True. Evenimentul OnPaint Este declanat n momentul n care unele zone ale formei date trebuie s fie redresate (de exemplu datorit faptului, c unele zone ale formei au fost acoperite temporar de alte ferestre). Evenimentul OnResize Este declanat n momentul n care forma a fost redimensionat de utilizator.

PALETA DE COMPONENTE
Paleta de componente a programului C++ Builder este mprit n diferite pagini.

6.1 Pagina Standard din paleta de componente


Toate componentele din pagina standard sunt vizibile; ele sunt denumite i controale. Componentele acestei pagini sunt utilizate cel mai frecvent. 30

Tabelul urmtor centralizeaz funciile diferitelor componente din aceast pagin. Nume MainMenu PopupMenu Descriere Meniul principal Creeaz linia meniului principal i comenzile coninute n diferite meniuri. Meniul flotant (local) Creeaz meniuri flotante; care n execuie pot fi afiate prin acionarea butonului drept de mouse. Etichet De regul se folosete pentru afiarea diferitelor texte statice. Linie de editare Afieaz o zon de editare format dintr-o singur linie n care utilizatorul poate s introduc sau s editeze un text. Memo Afieaz o zon de editare format din mai multe linii. Buton de comand Creeaz un control de tip buton, prin care utilizatorul poate s lanseze n execuie diferite aciuni. Buton de opiune Creeaz un control care are dou stri (selectat - neselectat). Butoanele de opiune sunt utilizate pentru a afia unele alegeri care nu se exclud reciproc. ntr-un grup de butoane de opiuni utilizatorului poate s selecteze mai multe butoane de opiuni. Buton radio Creeaz un control care are dou stri (selectat-neselectat). Butoanele radio sunt utilizate pentru a afia unele alegeri care se exclud reciproc. ntr-un grup de butoane radio utilizatorului poate s selecteze un singur buton radio. List derulat Afieaz o list format din mai multe elemente, din care utilizatorul poate s selecteze (de regul) un singur element. List ascuns(combinat) Afieaz o list format din mai multe elemente, din care utilizatorul poate s selecteze (de regul) un singur element. Bara de schimb de informaii i de defilare Afieaz o bar orizontal sau vertical la care este ataat un buton glisant. Poziia actual a butonului glisant este pus n coresponden biunivoc cu o valoare numeric dintr-un domeniu definit de utilizator. Poziia actual poate fi folosit i pentru realizarea defilrii unui obiect (de exemplu imagine grafic). Grup (cutie de grupare) Este o component de tip container plasate n interiorul cutiei aparin la acelai grup (astfel, de exemplu, ele pot fi deplasate simultan). Grup de butoane radio Este o component de tip container destinat gruprii butoanelor radio. Panou Creeaz o component de tip container care poate conine i alte componente. De regul se folosete pentru crearea unei linii de stare sau a unei bare de unelte.

Label Edit

Memo Button

CheckBox

RadioButton

ListBox

ComboBox

ScrollBar

GroupBox

RadioGroup Panel

Observaie: La toate componentele utilizate n C++ Builder, tipul obiectului asociat componentei ncepe cu litera T, de exemplu tipul unui obiect corespunztor componentei Label este TLabel. 6.2 Pagina Additional din paleta de componente Componentele paginii adiionale sunt destinate pentru realizarea diferitelor obiective speciale n aplicaii C++ Builder. Tabelul urmtor centralizeaz funciile diferitelor componente din aceast pagin. Nume Descriere BitBtn Buton de comand Poate s afieze att un text, ct i o imagine grafic. 31

SpeedButton

MaskEdit

StringGrid

DrawGrid Image

Shape

Bevel

ScrollBox

CheckListBox Splitter

StaticText Chart

Buton de accelerare Poate s afieze o imagine grafic, dar nu i un text. De regul aceste butoane sunt grupate, n interiorul unui panou, pentru a crea o bar de unelte (bar de accelerare). Linie de editare Permite introducerea doar a acelor caractere, care sunt permise de o masc definit de utilizator (caracterele care pot fi introduse sunt deci limitate, de exemplu n linia de editare pot fi introduse doar cifre). Masca de selectare a caracterelor permise este definit de proprietatea EditMask. Reea de iruri de caractere Creeaz o reea (un tabel), n care celulele reelei conin diferite iruri de caractere (de tip String). Reea de imagini grafice Creeaz o reea (un tabel), n care celulele reelei conin diferite imagini grafice. Imagine Se folosete pentru afiarea imaginilor de tip bitmap (*.BMP). Windows metafile (*.WMF) sau simbol grafic (*.JCO). Modele geometrice Permite desenarea diferitelor obiecte geometrice simple (cerc, elips precum i dreptunghi sau ptrat, cu sau fr coluri rotunjite). Dung (teitur) Creeaz linii sau dreptunghiuri care au aspect tridimensional (liniile sunt urcate sau coborte fa de forma proprietar). Cutie de defilare Creeaz un container redimensional, care n caz de nevoie va afia automat bare de defilare orizontale i verticale. Afieaz o list similar cu componenta ListBox, cu excepia c fiecrui element al listei i corespunde i un buton de opiune. Despritor Se depune ntre dou controale de tip panou aliniate n aceeai parte a ferestrei. Cu ajutorul lui (n execuie) controalele desprite pot fi redimensionate, prin operaia de tragere cu mouse-ul. Text static Este similar cu componenta Label, cu excepia c este prevzut i cu un handler de fereastr. Diagram Echivalentul grafic al componentei de tip Table

7. Gestiunea COMPONENTELOR
1. Aezarea componentelor pe o form O component poate fi aezat pe o form n felul urmtor: - Se efectueaz un clic de mouse pe simbolul grafic al componentei. - Se efectueaz un clic de mouse pe locaia formei, unde se dorete plasarea colului stnga sus al componentei. Dimensiunea componentei astfel aezate va respecta standardele sistemului C++Builder (care ulterior poate fi redimensionat). 2. Manipularea componentelor aezate pe o form Orice operaie referitoare la o component (sau o mulime de componente) poate fi realizat numai atunci, cnd componenta (sau componentele) este selectat (selectate). Comanda Align To Grid (meniul Edit) Aliniaz componentele selectate la cele mai apropiate puncte de reea. Comanda Bring To Front (meniul Edit) Deplaseaz componenta selectat n faa celorlalte componente.
32

Comanda Send To Back (meniul Edit) Deplaseaz componenta selectat n spatele celorlalte componente. 3. Alinierea componentelor selectate n cazul n care componentele au fost aezate pe form cu ajutorul mouse-ului (i de regul aa se procedeaz), geografia componentelor nu este mulumitoare, moment n care ele trebuie aliniate. Componentele care urmeaz s fie rearanjate prima dat trebuie selectate. Pentru alinierea componentelor selectate se pot utiliza dou metode: - din meniul Edit se alege comanda Align, prin care se afieaz o fereastr de dialog etichetat cu Alignment; - din meniul View se alege comanda Alignment Palette, prin care se afieaz o bar de unelte etichetate cu Alignment. Indiferent de metoda utilizat, n procesul de realizare a diferitelor tipuri de alinieri, poziia primei componente selectate va fi baza de referin a celorlalte componente din selecie. 4. Scalarea componentelor formei Dac se dorete redimensionarea proporional a tuturor componentelor aezate pe form, atunci se va alege din meniul Edit comanda Scale. Aceast comand afieaz o fereastr de dialog intitulat Scale. n linia de introducere etichet cu Scaling Factor se va tasta un procentaj cu care se dorete realizarea operaiei de scalare. Procentajele mai mari dect 100 vor dilata componentele formei, iar cele mai mici dect 100 vor comprima componentele formei. 5. Modificarea ordinii de parcurgere a componentelor n execuie componentele vizuale ale formei pot fi puse n focarul de introducere circular, prin acionarea repetat a tastei TAB (ordine direct) sau a tastei SHIFT-TAB (ordine invers). Ordinea de parcurgere a componentelor aezate pe o form sau a componentelor introduse ntr-o component de tip container poate fi stabilit n faza de elaborare a proiectului, prin dou metode: - cu ajutorul inspectorului de obiecte, n care pentru fiecare component se stabilete valoarea proprietii TabOrder (0, 1, 2, ); - cu ajutorul comenzii Tab Order (meniul Edit). 6. Modificarea ordinii de creare a componentelor nevizuale Ordinea de creare a componentelor nevizuale poate fi stabilit cu ajutorul comenzii Creation Order (meniul Edit). 7. Blocarea componentelor Dac se dorete ca toate componentele din forma activ s-i pstreze poziia lor curent, atunci din meniul Edit se va comanda Lock Controls.

8.Componenta Button
Butoanele de comand sunt componentele cel mai des utilizate n proiectele C++Builder. Ele sunt destinate lansrii n execuie a diferitelor aciuni.
33

Cele mai importante proprieti specifice componentelor tip Tbutton sunt urmtoarele: Proprietatea Cancel (de tip boolean) Stabilete modul de utilizare a tastei ESC. Dac pentru aceast proprietate se selecteaz valoarea True, atunci prin acionarea tastei ESC se va lansa n execuie procedura ataat evenimentului OnClick. Exist situaii n care pe form sunt mai multe butoane cu aceast proprietate pe valoarea True. n acest caz se va executa procedura care aparine primului buton vizibil, n ordinea de parcurgere cu taste TAB a formei. Proprietatea Default (de tip boolean) Stabilete modul de utilizare a tastei ENTER. Dac pentru aceast proprietate se selecteaz valoarea True, atunci prin acionarea tastei ENTER se va lansa n execuie procedura ataat evenimentului OnClick. Dac exista mai multe butoane cu aceast proprietate pe valoarea True se va executa doar acea procedur care corespunde primului buton vizibil, n ordinea de parcurgere cu taste TAB a formei. Se menioneaz ca dac un buton ajunge n focar se va considera acel buton ca buton implicit temporar. Proprietatea ModalResult Se utilizeaz n cazul butoanelor care au fost plasate pe forme corespunztoare diferitelor ferestre de dialog. O fereastr de dialog este o fereastr modal, adic nu se poate efectua nici o activitate n fereastra principal pn cnd fereastra respectiv nu se nchide. Aceast proprietate comunic dac se nchide sau nu fereastra de dialog proprietar al butonului precum i modul de nchidere al ferestrei de dialog. n momentul n care se efectueaz un clic pe un buton al ferestrei de dialog, atunci proprietatea ModalResult al ferestrei de dialog se va transforma n proprietatea ModalResult a butonului. Valorile posibile ale proprietii ModalResult sunt urmtoarele: mrNone, mrOK, mrCancel, mrAbort, mrRetry, mrIgnore, mrYes, mrNo, mrAll, mrNoToAll, mrYesToAll. Valoarea implicit este mrNone.

9.Componenta BitBtn
Componenta BitBtn (de tip TBitBtn ) creaz un buton de comand care n afar de etichet conine i o imagine bitmap. Componenta se afl pe pagina adiional de componente. Ea motenete toate proprietile butoanelor obinuite de comand. Ele sunt utilizate pentru activarea diferitelor aciuni corespunztoare formelor i ferestrelor de dialog. Proprieti mai importante: Proprietatea Glyph (de tip Tbitmap) Specific imaginea bitmap care se afieaz pe buton. Fiierul de extensie *.BMP aferent imaginii bitmap poate fi ncrcat n timpul elaborrii proiectului prin intermediul inspectorului de obiecte. Un fiier bitmap poate conine 1,2,3 sau 4 imagini. n cazul n care numrul imaginilor este mai mare dect 1 , atunci sistemul C++Builder, n funcie de starea butonului va afia imagini distincte. Proprietatea NumGlyphs Stabilete numrul imaginilor n fiierul *.BMP. Valorile posibile sunt de la 1 la 4, valoarea implicit este 1. Proprietatea Layout

34

Stabilete poziia reciproc a imaginii butonului i a etichetei butonului (eticheta butonului este definit prin proprietatea Caption). Valorile posibile ale acestei proprieti sunt centralizate n tabelul urmtor: Valoare Semnificaie blGlyphLeft Imaginea apare n stnga etichetei butonului. blGlyphRight Imaginea apare n dreapta etichetei butonului. blGlyphTop Imaginea apare deasupra etichetei butonului. blGlyphButtom Imaginea apare dedesuptul etichetei butonului. Proprietatea Margin Stabilete distana exprimat n puncte ntre imaginea i muchia butonului. Proprietatea Spacing Determin distana n puncte dintre imagine i etichet. Valoarea implicit este 4. Dac se alege valoarea 1, atunci eticheta va fi centrat ntre imagine i muchia butonului. Proprietatea Kind Determin tipul butonului. Pot fi folosite 11 valori, n care apare i simbolul aferent tipului, precum i valorile implicite corespunztoare proprietilor motenire Default, Cancel i ModalResult.

10. Componenta Label


Componenta Label (etichet, de tip TLabel) permite afiarea anumitor texte statice. Textul respectiv este specificat prin proprietatea Caption a componentei, care poate fi stabilit att n faza de elaborare a proiectului (cu inspectorul de obiecte), ct i n execuie, printr-o instruciune de atribuire de forma: Label1.Caption:= Textul static; Proprietatea Alignment Specific poziionarea orizontal a textului. Proprietatea Layout Specific poziionarea vertical a textului. Proprietatea AutoSize (de tip boolean) Se refer la redimensionarea automat a dreptunghiului corespunztor componentei, n funcie de lungimea textului. Proprietatea Transparent (de tip boolean) Specific dac componenta este sau nu transparanet. Proprietatea WordWrap (de tip boolean) Specific dac n caz de nevoie textul etichetei poate fi afiat sau nu pe mai multe linii. Proprietatea ShowAccelChar (de tip boolean) Se refer la modul de afiare a caracterului & (ampersand) situat n textul aferent componentei. Dac se alege varianta True, atunci caracterul care urmeaz dup & va fi subliniat. Un caracter subliniat joac rolul unui caracter accelerator.

11.Obiectul list de iruri de caractere StringList


35

n C++Builder exist un numr mare de componente, la care unele informaii referitoare la datele ataate componentei sunt memorate sub forma unui obiect care are tipul list de iruri de caractere. Tipul aferent acestui obiect este descris cu ajutorul cuvntului TStringList. Exemple de componente care conin date de tip TStringList sunt: - elementele listelor simple (de tip TListBox); - elementele listelor ascunse (de tip TComboBox); - elementele grupurilor de butoane radio (de tip TRadioGroup); - liniile unui memo (de tip TMemo); Un obiect s de tip TStringList poate fi creat dinamic prin constructorul su: TStringList *s=new TStringList; Destructorul unui obiect de acest tip are numele Free; el poate fi apelat printr-o secven de forma: delete s; Principalele proprieti i metode ale obiectelor de tip TStringList. Proprietatea Count (de tip ntreg) conine numrul elementelor listei. Elementele unei liste pot fi parcurse printr-o secven de forma: int i; for (i=0;i<s->Count;i++) //prelucrare element Proprietatea Sorted (de tip boolean) Specific dac irul listei vor fi sortate automat. Fiecare obiect de tip TSringList are proprietatea Strings, care poate fi considerat ca fiind indicele unui anumit element al listei. Astfel, de exemplu, prin secvena AnsiString sir; sir = ListBox1->Items->Strings [1]; se realizeaz citirea elementului al doilea al unei liste simple (primul element are indicele egal cu zero). Urmtoarea secven realizeaz nlocuirea primului element al unei liste simple cu un alt ir de caractere: ListBox1->Items->Strings [0] = "Valoarea nlocuitoare"; Metoda Add Adaug un nou ir la o list de tip TStringList. Exemple de utilizare ale acestei metode: s->Add("Valoare noua"); ListBox1->Items->Add("Albastru"); Metoda IndexOf Returneaz poziia unui ir de caracter specificat n cadrul listei. De esemplu: if (Memo1->Lines->IndexOf ("Un sir") == -1) ShowMessage ("Sir negasit"); else ShowMessage ("Am gasit"); Metoda Insert Se utilizeaz la liste nesortate; ea adaug un ir de caractere la o list, ntr-o poziie specificat de un indice. Astfel, de exemplu, secvena: ListBox1->Items->Insert (3, "Sir inserat"); permite inserarea irului de caractere n poziia a patra. Metoda Sort
36

Sorteaz irurile listei n ordine cresctoare. Metoda Clear terge toate irurile listei (golirea listei), de exemplu: Memo1->Clear; Metoda Delete ndeprteaz elementul de indice specificat din list. De exemplu, urmtoarea instruciune terge elementul al patrulea al unei liste simple: ListBox1->Items->Delete(3); Metoda Exchange Permite schimbarea poziiei a doua elemente ntr-o list, deci permite rearanjarea elementelor listei. Astfel, de exemplu, instruciunea ListBox1->Items->Exchange (5,0); schimb ntre ele irurile situate n poziia a asea i n prima poziie.

12.Componenta Edit
Componenta Edit (de tip TEdit) afieaz o zon de editare format dintr-o singur linie n care utilizatorul poate s introduc sau s editeze un text; ea poate fi folosit i pentru a trasmite utilizatorului un mesaj, adic pentru a afia un text oarecare. Proprietatea cea mai important a componentei este Text (de tip AnsiString). Proprietile specifice componentei Edit sunt urmtoarele: Proprietatea AutoSelect (de tip boolean) Se verific la modul de selectare a textului din linia de editare n momentul n care componenta ajunge n focar. Proprietatea AutoSize (de tip boolean) Stabilete modul de modificare a nlimii liniei de editare, n funcie de textul introdus. Proprietatea CharCase Se refer la utilizarea minusculelor i majusculelor. Proprietatea HideSelection (de tip boolean) Se refer la modul de vizualizare a textului selectat. Dac se alege varianta True (valoarea implicit), atunci textul selectat al liniei de editare nu mai este evideniat n momentul pierderii focarului. Proprietatea MaxLength (de tip ntreg) Specific numrul maxim de caractere care pot fi introduse n linia de editare. Proprietatea OEMConvert (de tip boolean) Se refer la posibilitatea de verificare dac caracterele tastate vor fi reprezentate corect. Proprietatea PasswordChar (de tip char) Se folosete atunci, cnd se introduc cuvinte de trecere, adic atunci, cnd se dorete ascunderea ecoului caracterelor tastate. Proprietatea ReadOnly (de tip boolean) Se refer la protecia informaiilor coninute n linia de editare.

13.Componenta Memo
37

Componenta Memo permite gestionarea textelor formate din mai multe linii, afind o zon de editare compus din mai multe linii. Este o extindere a componentei Edit, care motenete majoritatea proprietilor i metodelor liniilor de editare. Cantitatea de text care poate fi memorat ntr-un memo practic nu este limitat. Este posibil ncrcarea liniilor componentei cu informaiile coninute ntr-un fiier text (metoda LoadFromFile), respectiv salvarea informaiilor coninute n linii ntr-un fiier text (Metoda SaveToFile). Dac pentru proprietatea Align a componentei se alege varianta alClient, atunci componenta va ocupa ntregul spaiu al formei. Proprietile specifice ale unei componente Memo sunt urmtoarele: Proprietatea Alignment Determin modul de aliniere a textului n interiorul componentei. Proprietatea Lines (de tip TStrings) Permite accesul la irul de caractere situat ntr-o linie specificat a componentei. Proprietatea WantReturns (de tip bool) Stabilete dac utilizatorul poate s insereze n memo sfritul de linie cu ajutorul tastei ENTER. Proprietatea WantTabs (de tip bool) Stabilete dac utilizatorul poate s insereze n memo caractere TAB. Proprietatea WordWrap (de tip bool) Determin dac vor fi introduse sfrituri de linie n momentul n care se ajunge la muchia din dreapta componentei. n timpul execuiei coninutul unui memo poate fi ncrcat cu ajutorul metodei LoadFromFile. Salvarea coninutului poate fi realizat prin metoda SaveToFile. Argumentul acestor metode este numele fiierului, de exemplu: Memo1->Lines->LoadFromFile("nume.txt"); Memo1->Lines->SaveToFile("nume.txt"); }

14.Componenta MaskEdit
Aceast component este asemntoare componentei Edit, deosebirea fiind, c n linia de editare pot fi tastate doar acele caractere, care sunt permise de o masc de introducere definit de utilizator. Pentru editarea proprietii EditMask, se va lansa n execuie un program special, denumit editorul de mti.

15. Ferestre pentru afiarea mesajelor i introducerea informaiilor Procedura ShowMessage


Afieaz o fereastr care conine dou elemente: un mesaj (ir de caractere) i un buton OK.

Funcia MessageDlg
Afieaz o fereastr, care conine un mesaj, un text de titlu, un simbol grafic i un numr de butoane de comand. Fereastra afiat de funcie este depus n centrul ecranului. Funcia se definete prin:
38

extern PACKAGE int __fastcall MessageDlg(constAnsiString Msg, TMsgDlgType DlgType, TMsgDlgButtons Buttons, int HelpCtx); Parametrul Msg este textul care va fi afiat n fereastr. Parametrul DlgType stabilete tipul ferestrei de dialog care va fi generat. Valorile posibile ale acestui parametru sunt urmtoarele: Valoarea parametrului DlgType mtWarning mtError mtInformation mtConfirmation mtCustom Parametrul Buttons determin care sunt acele butoane de comand care vor fi afiate n fereastra de dialog. Valorile care pot fi incluse n specificarea mulimii sunt urmtoarele: Valoare mbYes mbNo mbOK mbCancel mbHelp mbAbord mbRetry mbIgnore mbAll Dac, de exemplu, se dorete utilizarea butoanelor Yes i No, atunci pentru acest parametru se va da valoarea de tip mulime [mbYes, mbNo].

Funcia MessageDlgPos
Este asemntoare cu funcia MessageDlg, cu deosebirea c fereastra afiat este poziionat ntr-o locaie dorit a ecranului.

Funcia InputBox
Afieaz o fereastr de dialog n care utilizatorul poate s introduc un text (ir de caractere) ntr-o linie de editare.

Funcia InputQuery
Constituie o generalizare simpl a funciei InputBox; prin care se poate decide dac utilizatorul - pentru nchiderea ferestrei a folosit butonul OK sau butonul Cancel

16. Componenta CheckBox


Componenta CheckBox (de tip TCheckBox) afieaz un buton de opiune. Utilizatorul poate s marcheze opiunea (prin care devine selectat) sau poate s demarcheze opiunea respectiv (prin care opiunea devine neselectat). Aceast x
39

component se regsete n pagina standard a paletei de componente; simbolul grafic aferent are forma . Proprietile specifice ale componentei buton de opiune sunt urmtoarele: Proprietatea Alignment Se refer la poziia etichetei (textului) ataate butonului de opiune. Proprietatea AllowGrayed (de tip boolean) Se refer la aa-zisa stare gri (sau stare estompat) a butonului de opiune. Dac se alege valoarea True, atunci se permite starea gri a butonului de opiune, astfel c butonul poate avea trei stri: - selectat (bifat); - neselectat (nebifat); - estompat. Dac se alege varianta False (care este i valoarea implicit), atunci butonul are numai dou stri: selectat (bifat) i neselectat (nebifat). Proprietatea Checked (de tip boolean) Se refer la existena sau lipsa caracterului de bifare n interiorul butonului de opiune. Dac aceast proprietate are valoarea True, n interiorul butonului de opiune apare caracterul de bifare (proprietatea State = cbChecked), care indic faptul, c opiunea respectiv este selectat. Dac aceast proprietate are valoarea False, atunci butonul de opiune fie c nu este selectat (proprietatea State = cbUnchecked), fie c este estompat (proprietatea State = cbGrayed). Proprietatea State Se refer la starea butonului de opiune. Valorile posibile ale acestei proprieti sunt urmtoarele: - cbUnchecked butonul de opiune nu conine caracterul de bifare, prin care se indic faptul c utilizatorul nu a selectat opiunea respectiv (valoarea implicit); - cbChecked butonul de opiune conine un caracter de bifare, prin care se indic faptul, c utilizatorul a selectat opiunea respectiv; - cbGrayed butonul de opiune conine un caracter de bifare, care ns este estompat.

17. Componenta GoupBox


Componenta GroupBox (cutie de grupare, de tip TGroupBox) este un container. Componentele plasate n interiorul ei vor aparine la acelai grup, astfel c, de exemplu, n perioada de elaborare a proiectului ele pot fi deplasate simultan. ntre componenta de cutie i componentele plasate n interiorul cutiei se creeaz o relaie tip printe copil. Componenta este folosit pentru gruparea logic a diferitelor componente (de exemplu pentru gruparea butoanelor de opiune sau de radio). Aceast component se gsete n pagina standard a paletei de componente i are un simbol grafic de forma . Nu are proprieti i metode specifice.
40

18. Componenta RadioButton


Componenta RadioButton creeaz un buton de control care are dou stri: selectat sau neselectat. Butoanele radio sunt introduse n interiorul unei componente de tip container, cum este componenta specializat RadioGroup, sau componenta GroupBox, prin care ele devin grupate. ntr-un grup de butoane radio utilizatorului poate s selecteze numai un singur buton radio, deci prin selectarea unui buton celelalte butoane ale grupului automat devin deselectate. Un container implicit este forma aplicaie. Proprietile specifice ale butoanelor radio sunt urmtoarele: Proprietatea Alignment Stabilete poziia textului afiat butonului (Caption) fa de imaginea butonului radio. Proprietatea Checked (de tip boolean) Determin dac opiunea reprezentat de butonul radio este selectat. Dac valoarea proprietii este True, butonul radio este selectat, iar celelalte butoane radio din acelai container sunt deselectate. n cazul valorii False butonul de radio nu este selectat (valoare implicit).

19.Componenta RadioGroup
Componenta RadioGroup (grup de butoane radio, de tip TRadioGroup) este un container special care poate conine numai butoane radio. Butoanele radio plasate ntr-un astfel de grup coopereaz: dac se selecteaz un buton al grupului celelalte butoane automat devin neselectate. Aceast component permite gruparea logic a diferitelor butoane radio. Componenta aparine paginii standard a paletei de componente. Proprietile ItemIndex (de tip integer) Indic indicele butonului radio care a fost selectat n interiorul grupului n momentul respectiv. Indicele corespunztor primul buton al grupului este 0, celui de al doilea este 1 i aa mai departe. Dac valoarea corespunztoare acestei proprieti este 1 (minus unu, valoarea implicit), atunci din grupul respectiv nu a fost selectat nici un buton radio. Proprietatea Items (de tip TStrings) Descrie numrul i lista etichetelor butoanelor radio din grup. Aceast proprietate poate fi stabilit att n perioada de elaborare a proiectului, ct i n execuie. Dac se dorete definirea butoanelor radio n timpul elaborrii proiectului, atunci n inspectorul de obiecte se va selecta proprietatea Items i se va aplica un dublu clic n coloana de valori (sau se va efectua un clic pe butonul cu trei puncte situat n coloana de valori). n urma acestei aciuni se afieaz fereastra editorului de iruri de caractere. Fiecrei linii introduse i va corespunde un buton radio. Textul unei linii este interpretat ca fiind textul ataat unui buton radio. Dac se dorete crearea butoanelor radio n timpul execuiei, atunci vor fi folosite metodele standard de gestiune a irurilor de caractere (de exemplu metoda Add). Proprietatea Columns
41

Definete numrul coloanelor utilizate n grupul de butoane radio. Valorile posibile sunt de la 1 la 16. Valoarea implicit este 1, caz n care butonul radio sunt plasate ntr-o singur coloan vertical.

20.Componenta SCROLLBAR
Componenta ScrollBar (de tip TScrollBar) are aspectul exterior similar barelor folosite Windows, ns ea poate fi aezat ntr-o locaie arbitrar a formei. Componenta apare n pagina standard a paletei de componente. Se folosete att pentru defilarea unor obiecte care nu sunt prevzute cu bare de difilare ncorporate (de exemplu defilarea unei imagini de tip TImage n interiorul unui panou), ct i pentru citirea i scrierea unor valori numerice corespunztoare poziiei actuale a butonului glisant al barei. Proprietile specifice ale unei bare de defilare sunt urmtoarele: Proprietatea Kind Se refer la orientarea barei de defilare. Proprietatea Min i Max (de tip integer) Desemneaz valoarea minim, respectiv valoarea maxim care se poate reprezenta pe bara de defilare. Aceste valori deci stabilesc domeniul de variaie al butonului glisant. Valoarea implicit a proprietii Min este 0, iar a proprietii Max este 100. Proprietatea Position (de tip integer) Reprezint poziia curent a butonului glisant. Aceast valoare variaz ntre limitele stabilite de proprietile Min i Max. Proprietatea SmallChange (ntreg din intervalul nchis 1 i 32767) Stabilete deplasarea butonului glisant (deci variaia proprietii Position) n momentul n care utilizatorul efectueaz un clic pe unul din butoanele cu sgei situat la extremitile barei de defilare (sau cnd apas vreun buton cu sgeat a tastaturii). Valoarea implicit este egal cu 1. Proprietatea LargeChange (ntreg din intervalul nchis 1 i 32767) Stabilete deplasarea butonului glisant n momentul n care utilizatorul efectueaz un clic pe o poriune a barei de defilare care este ntre butonul glisant i butonul cu sgeat din extremitatea barei. Valoarea implicit este egal cu 1. Evenimentele specifice ale unei bare de defilare sunt urmtoarele: Evenimentul OnChange Se declaneaz imediat dup ce a fost modificat valoarea proprietii Position. Evenimentul OnScroll Se declaneaz atunci, cnd utilizatorul efectueaz o glisare (defilare) cu ajutorul mouse-ului sau cu ajutorul tastaturii.

COMPONENTA CANVAS
n acest capitol sunt prezentate noiunile de baz referitoare la modul de utilizare a graficii n C++Builder. Utilizatorul poate s deseneze:
42

pe o form (de tip TForm); pe imprimant (cu ajutorul obiectului Printer, caz n care modulul n care se efectueaz tiprirea desenului trebuie inserat i o linie de forma uses Printers); - pe componenta Image (de tip TImage, depus n pagina adiional de componente). Desenarea pe aceste obiecte se realizeaz identic, i anume prin intermediul obiectului Canvas (pnz de desenare). Anumite figuri geometrice simple pot fi desenate i prin intermediul componentei Shape (de tip TShape, depus n pagina adiional de componente). n C++Builder mai exist i alte componente de desenare mai puin utilizate. Orice component, care are i proprietatea Canvas, poate fi folosit pentru realizarea diferitelor desene. Obiectul Canvas (care n acelai timp este i o proprietate a obiectelor de tip TForm, TImage i TPrinter) joac deci un rol de baz n crearea imaginilor n C++Builder. Acest obiect creeaz un spaiu abstract de desenare. Practic orice activitate grafic poate fi realizat prin metodele i proprietile acestui obiect. Proprietile, evenimentele i metodele de baz ale obiectului Canvas sunt urmtoarele: - Pen tipul de peni utilizat pentru desenarea exteriorului imaginilor liniare i circulare; - Brush tipul de pensul utilizat pentru haurarea interiorului imaginilor; - Font tipul de font utilizat pentru desenarea textelor; - existena unui spaiu abstract de desenare pentru ncrcarea i afiarea diferitelor fiiere grafice (de extensie BMP, ICO, WMF); - posibilitatea de desenare i de haurare a unui numr mare de figuri geometrice (elipse, dreptunghiuri, sectoare, arce, poligoane i altele). Proprietile de baz ale obiectului Pen sunt: - culoarea peniei (Color); - stilul peniei (Style); - grosimea peniei (Width). Culoarea peniei poate fi stabilit cu o instruciune de forma: Form1.Canvas.Pen.Color:= o constant predefinit de culoare; Constante predefinite de culoare sunt de exemplu clBlack(negru), clRed(rou), clGreen(verde), clBlue(albastru), clDkGray(gri nchis), clWhite (alb) i altele. O alt metod de stabilire a culorii peniei este utilizarea funciei RGB, de exemplu: Form1->Canvas->Pen->Color=RGB (127,0,255); Argumentele funciei RGB sunt trei valori ntregi, din intervalul [0,255], care reprezint intensitile culorilor de baz: rou, verde i albastru.
43

A treia metod de stabilire a culorii peniei este afiarea n timpul execuiei a ferestrei de dialog standard Colors (componenta ColorDialog din pagina Dialogs) i selectarea unei culori. Codul culorii selectate de utilizator se depune n proprietatea Color a ferestrei de dialog. n continuare codul culorii trebuie ncrcat n proprietatea Color a peniei. if (ColorDialog1->Execute()==1) { Form1->Canvas->Pen->Color=ColorDialog1->Color; //Desenarea unei elipse cu coloarea selectata Form1->Canvas->Ellipse (0,0,100,100); } Grosimea peniei poate fi stabilit cu o instruciune de forma: Form1->Canvas->Pen->Width = numrul ntreg care definete grosimea n puncte a peniei; Grosimea implicit a peniei este egal cu 1. Stilul peniei poate fi stabilit printr-o instruciune de forma: Form1->Canvas->Pen->Style:= o constant predefinit de stil; Constantele predefinite de stil sunt de exemplu psSolid (valoarea implicit, linie continu), psDash (linie ntrerupt), psDot (linie punctat), psClear (linie invizibil) i altele. Proprietile de baz ale obiectului Brush sunt culoarea pensulei (Color) i stilul pensulei (Style). Se menioneaz faptul c implicit nu se haureaz interiorul elipselor i al dreptunghiurilor. Culoarea pensulei se selecteaz exact aa, cum se selecteaz culoarea peniei. Modelul de haurare poate fi modificat printr-o instruciune de forma: Form1->Canvas->Brush->Style:=o constant predefinit de stil; Constantele predefinite de stil de exemplu bsSolid (valoarea implicit, pensul monocolor), bsClear, bsHorizontal, bsVertical, bsFDiagonal, bsBDiagonal, bsCross i bsDiagCross. Proprietile de baz ale obiectului Font sunt culoarea fontului (Color), numele fontului (Name), stilul fontului (Style) i dimensiunea fontului n puncte (Size). O cale simpl pentru a stabili aceste proprieti n timpul execuiei programului const n afiarea ferestrei de dialog standard Font (componenta FontDialog din pagina Dialogs), urmat de preluarea informaiilor selectate de utilizator. if (FontDialog1->Execute()) { Form1->Canvas->Font->Name= FontDialog1->Font->Name; Form1->Canvas->Font->Size= FontDialog1->Font->Size; Form1->Canvas->Font->Color= FontDialog1->Font->Color;
44

Form1->Canvas->Font->Style= FontDialog1->Font->Style; Form1->Canvas->TextOut(50,50,"Text Canvas"); } Pentru afiarea (adic desenerea) unui text pe obiectul Canvas se folosete procedura TextOut, care definete prin: void __fastcall TextOut(int X, int Y, const AnsiString Text); Parametrii X i Y reprezint coordonatele stnga sus pe pnz de desenare a textului care se deseneaz, parametrul Text este irul de caractere care se deseneaz. Penia de desenare poate fi mutat ntr-o poziie dorit a pnzei. Aceast operaie poate fi realizat prin functia MoveTo, care se definete prin: void __fastcall MoveTo(int X, int Y); Parametrii X i Y reprezint noua poziie a peniei. void __fastcall LineTo(int X, int Y); Pentru desenarea unui dreptunghi folosind penia i pensula actual se va folosi functia Rectangle, care se definete prin: void __fastcall Rectangle(int X1, int Y1, int X2, int Y2); sau void __fastcall Rectangle(TRect Rect); Parametrii X1 i Y1 reprezint coordonatele colului stnga sus al dreptunghiului, iar X2 i Y2 coordonatele colului dreapta jos al dreptunghiului. Dac se folosete a doua variant TRect se utilizeaz pentru a defini un dreptunghi prin cele 2 coluri. Pentru a desena o elips cu penia i pensula actual se folosete functia Elipse, care se definete prin: void __fastcall Ellipse(int X1, int Y1, int X2, int Y2); void __fastcall Ellipse(TRect Rect); Parametrii X1, Y1, X2, Y2 deseneaz dreptunghiul de ncadrare a elipsei. Un dreptunghi cu colurile rotunjite poate fi desenat prin intermediul procedurii RoundRect: void __fastcall RoundRect(int X1, int Y1, int X2, int Y2, int X3, int Y3); Cei doi parametri suplimentari X3 i Y3 reprezint lungimea laturilor dreptunghiului de ncadrare a elipsei folosite pentru rotunjirea colurilor dreptunghiului. Un arc de elips poate fi desenat cu ajutorul functiei Arc, care se definete prin: void __fastcall Arc(int X1, int Y1, int X2, int Y2, int X3, int Y3, int X4, int Y4);
D A C

45

n care se utilizeaz punctele de definiie A(X1,Y1), B(X2,Y2), C(X3,Y3) i D(X4,Y4). Arcul de elips este desenat n sensul trigonometric (sens invers acelor unui ceas). Desenarea se ncepe din punctul n care elipsa intersecteaz linia ce unete punctul C cu centrul elipsei, pn n punctul n care elipsa intersecteaz linia care unete punctul D cu centrul elipsei. Pentru desenarea unui sector de elips se folosete functia Pie: void __fastcall Pie(int X1, int Y1, int X2, int Y2, int X3, int Y3, int X4, int Y4); void __fastcall Pie(int X, int Y, int W, int H, int Angle, int AngleLength); iar pentru desenarea unui segment de elips functia Chord: void __fastcall Chord(int X1, int Y1, int X2, int Y2, int X3, int Y3, int X4, int Y4); Semnificaia parametrilor este identic cu cea utilizat n functia Arc.

COMPONENTA IMAGE
Componenta Image (de tip TImage) permite afiarea unei imagini grafice pe o form. Componenta se afl n pagina adiional a paletei de componente. Aceast component are anumite proprieti speciale, prin care se poate stabili modul n care imaginea ncrcat se raporteaz la liniile ferestrei ale componentei. Proprietatea Picture (de tip TPicture) Specific imaginea care se afieaz n componenta Image. Pot fi afiate fiiere imagini bitmap (de extensie *.BMP), simboluri grafice (de extensie *.ICO), imagini de tip Windows metafile (de extensie *.WMF) sau imagini de tip utilizator. Imaginea care se va afia n component poate fi selectat i n perioada de elaborare a proiectului, cu ajutorul editorului de imagini (Picture Editor). n acest scop se va efectua un clic pe butonul cu trei puncte situat n inspectorul de obiecte din linia proprietii Picture. O alt modalitate de lansare n execuie a editorului de imagini este efectuarea unui dublu clic pe componenta imagine a formei. Pentru ncrcarea dinamic a imaginilor grafice se folosete metoda LoadFromFile; argumentul metodei este numele fiierului care urmeaz s fie ncrcat n component. Modul de utilizare a metodei este urmtorul: Image1->Picture->LoadFromFile (NumeFisier); Salvarea pe disc a imaginii desenate ntr-o component Image poate fi realizat prin metoda SaveTo File: Image1->Picture->SaveToFile (NumeFisier); Proprietatea Stretch (de tip boolean)
46

Redimensioneaz imaginea specificat de proprietatea Picture n aa fel, nct imaginea respectiv va ocupa ntregul spaiu al componentei Image. Proprietatea AutoSize (de tip boolean) Stabilete dac dimensiunea componentei este redimensionat sau nu n cazul n care imaginea introdus nu ar ncpea n component. Proprietatea Canvas (de tip TCanvas) Este suprafaa de desenare utilizat pentru afiarea imaginii specificate de proprietatea Picture. Pentru adugarea unei etichete la imaginea afiat, se va folosi o secven de forma Image1->Canvas->TextOut (x, y, Text); Proprietatea Center (de tip boolean) Stabilete dac centrul imaginii va coincide cu centrul componentei. Dac se alege varianta True, atunci centrul imaginii va coincide cu centrul componentei. Dac se alege varianta False, colul stnga sus al imaginii va fi poziionat n colul stnga sus al componentei.

COMPONENTA IMAGELIST
Componenta ImageList (de tip TImageList) este o colecie de imagini care au aceeai dimensiune. Simbolul grafic aferent componentei se gsete n pagina Win32 a paletei de componente. Imaginile din list pot fi refereniate cu ajutorul unui indice. Dac lista conine n imagini, atunci domeniul de variaie al indicelui este de la 0 pn la n-1. Aceast component se utilizeaz pentru a uura gestiunea unui numr mare de simboluri grafice i imagini bitmap. Toate imaginile din list vor fi coninute ntr-o singur imagine bitmap, de mare dimensiune. Introducerea imaginilor n list i editarea lor se realizeaz prin editorul specializat de imagini. Acest utilitar se activeaz n felul urmtor: dup ce se depune pe form o component ImageList, printr-un clic efectuat cu butonul drept se activeaz meniul local, din care se alege comanda ImageListEditor. Principalele proprieti i metode ale componentei ImageList sunt urmtoarele: Proprietatea Count a unui obiect de tip TImageList conine numrul de imagini din lista de imagini. Pentru desenarea pe un obiect Canvas a unei imagini a listei se folosete metoda Draw. Aceast metod are patru parametrii: obiectul Canvas pe care se deseneaz,
47

coordonatele X, Y a colului stnga sus al imaginii n interiorul obiectului Canvas, precum i indicele imaginii care urmeaz s fie desenat. De exemplu instruciunea urmtoare deseneaz n punctul de coordonate 0, 0 a obiectului Canvas corespunztor formei imaginea cu indicele 3 a listei de imagini: ImageList1_>Draw (Form1->Canvas, 0, 0, 3);

COMPONENTA SHAPE
Componenta Shape (de tip TShape) permite adugarea la forme a diferitelor obiecte (modele) geometrice simple. Pentru desenarea acestor obiecte sistemul de operare Windows nu are nevoie de multe resurse. Componenta Shape se gsete n pagina componentelor adiionale. Dimensiunea obiectului desenat poate fi stabilit prin proprietile Width (lime) i Height (nlime). Pentru desenarea conturului exterior al obiectului geometric se folosete o peni (care poate fi selectat prin proprietatea Pen). Pentru haurarea interiorului obiectului se folosete o pensul (care poate fi selectat prin proprietatea Brush). Stilul pensulei (Shape1.Brush.Style) poate fi definit cu ajutorul urmtoarelor constante: bsSolid (valoare implicit), bsCross, bsClear, bsDiagCross, bsBDiagonal, bsHorizontal, bsFDiagonal i bsVertical. Proprietatea Shape (de tip enumerare) Specific tipul obiectului care se deseneaz pe form. Cele ase valori posibile sunt centralizate n tabelul urmtor: Valoare stCircle stEllipse stRectangle stRoundRect stRoundSquare stSquare Cerc. Elips. Dreptunghi. Dreptunghi cu colurile rotunjite. Ptrat cu coluri rotunjite. Ptrat. Obiect selectat pe form

COMPONENTA PANEL
Componenta Panel (de tip TPanel) afieaz un container, care n momentul iniial nu conine nici o alt component. Dac se aeaz una sau mai multe componente n interiorul panoului, atunci ntre componentele inserate i componenta panou se creeaz o
48

relaie de tip copil-printe (astfel, de exemplu, dac n faza de elaborare a proiectului este deplasat componenta panou, atunci toate componentele coninute n panou se vor deplasa mpreun cu panoul respectiv). Componenta Panel poate fi utilizat i pentru crearea unei linii de stare sau a unei bare de unelte. Ea se gsete n pagina standard a paletei de componente.

Proprietatea BevelInner Stabilete stilul dungii interioare a panoului. O component de tip panou este prevzut cu dou dungi, prin care se asigur un aspect exterior tridimensional. Proprietatea BevelOuter Stabilete stilul dungii exterioare a panoului. Proprietatea BevelWidth Stabilete limea cumulat (n puncte) a dungii interioare i exterioare. Proprietatea BorderStyle Stabilete stilul chenarului care se traseaz n jurul panoului, ntre cele dou dungi ale panoului. Proprietatea BorderWidth Stabilete limea chenarului, adic distana (ntre puncte) ntre dunga interioar i cea exterioar. Proprietatea FullRepaint (de tip boolean) Stabilete modul de redesenare a panoului i a componentelor coninute n panou n momentul redimensionrii panoului. Dac se alege varianta False (valoarea implicit), atunci dup redimensionare nici panoul, nici componentele coninute nu vor fi redesenate. Proprietatea Locked (de tip boolean) Stabilete modul de nlocuire a panoului (utilizat sub forma unei bare de unelte) cu o alt bar de unelte, care este livrat de o aplicaie de tip server OLE. Dac se alege varianta False (valoarea implicit), atunci panoul va fi utilizat sub forma unei bare de unelte, care va fi ataat unei aplicaii OLE. Dac se alege varianta True, atunci bara de unelte corespunztoare unei aplicaii OLE nu va nlocui panoul actual.
49

COMPONENTA LISTBOX
Componenta ListBox (de tip TListBox) afieaz o list format din mai multe elemente, din care utilizatorul poate selecta (de regul) un singur element. Componenta aparine paginii standard a paletei de componente. Adugarea unui element la list se realizeaz de regul n timpul elaborrii proiectului, prin intermediul proprietii Items. Adugarea elementelor la list poate fi realizat ns i n timpul execuiei, prin intermediul metodelor specifice irurilor de caractere. Indicele elementului selectat se determin prin proprietatea ItemIndex. Propritile specifice listelor sunt urmtoarele: Proprietatea BorderStyle Se refer la chenarul listei. Valorile posibile sunt: - bsNone nu exist chenar vizibil; - bsSingle exist un chenar liniar (valoarea implicit). Proprietatea Columns (de tip ntreg) Specific numrul coloanelor simultan vizibile ntr-o list format din mai multe coloane. Proprietatea ExtendedSelect (de tip boolean, cu valoarea implicit True) Determin dac utilizatorul poate selecta cu ajutorul mouse-ului sau prin acionarea tastei Shift un domeniu compact de elemente din lista. Aceast prorietate este operat numai atunci, cnd este validat proprietatea de selecie multipl (MultiSelect = True). Proprietatea IntegralHeight (de tip boolean) Controleaz nlimea listei. Proprietatea ItemIdex (de tip integer) Indic indicele elementului selectat n momentul respectiv. Proprietatea Items (de tip TString) Descrie numrul i elementele listei. Proprietatea MultiSelect (de tip boolean)

50

Se refer la posibilitatea de selectare simultan a mai multor elemente intr-o list. Dac se alege varianta True, utilizatorul poate s selecteze simultan mai multe elemente ale listei. Proprietatea SelCount (de tip integer, cu atributul read-only) Comunic numrul elementelor selectate ntr-o list n care a fost validat proprietatea de selecie multipl. Proprietatea Selected (de tip boolean) Determin dac un element specificat al listei este sau nu este selectat. Referenierea unui element al listei se realizeaz printr-o secven de forma: if (ListBox1->Selected[i]) //elementul cu indicele "i" este selectat else //elementul cu indicele "i" nu este selectat Proprietatea Sorted (de tip boolean) Specific dac elementele listei sunt afiate n ordine alfabetic cresctoare. Proprietatea Style Stabilete stilul de desenare a listei. Proprietatea TabWidth (de tip integer, cu valoarea implicit 0) Stabilete numrul de puncte ecran corespunztoare caracterului Tab n interiorul listei. Proprietatea TopIndex (de tip integer) Specific indicele elementului care apare n partea superioar a listei. Proprietatea poate fi folosit pentru a afla, n momentul respectiv, care element se gsete n partea superioar a listei. Prin atribuirea unei valori la aceast proprietate, elementul desemnat va fi afiat n partea superioar a listei. Evenimentul OnDrawItem Se declaneaz atunci, cnd urmeaz s fie desenat un element al unei liste, n care stilul utilizat este IbOwnerDrawFixed sau IbOwnerDrawVariable. Functia ataat acestui eveniment are forma urmtoare: void __fastcall TForm1::ListBox1DrawItem(TWinControl *Control, int Index, TRect &Rect, TOwnerDrawState State) {

51

} Functia conine patru parametri; semnificaia lor este urmtoarea: 1. Parametrul Control este o referin la lista care conine elementul care urmeaz s fie desenat. 2. Parametrul Index comunic indicele elementului care urmeaz s fie desenat. 3. Parametrul Rect comunic coordonatele dreptunghiului n care se va desena elementul actual al listei, pe obiectul Canvas (pnz de desenare) corespunztor listei. 4. Parametrul State comunic starea curent a elementului. Valorile posibile ale acestui parametru sunt: - odSelected - elementul este selectat; - odDisabled ntreaga list este n stare inhibat; - odFocused elementul n momentul respectiv este n focar. Evenimentul OnMeasureItem Se declaneaz atunci, cnd urmeaz s fie desenat un element al unei liste, n care stilul utilizat este IbOwnerDrawVariabile. Functia ataat acestui eveniment are forma urmtoare: void __fastcall TForm1::ListBox1MeasureItem(TWinControl *Control, int Index, int &Height) { } Functia conine trei parametri; semnificaia lor este urmtoarea: 1. Parametrul Control este referin la lista care conine elementul care urmeaz s fie desenat. 2. Parametrul Index comunic indicele elementului care urmeaz s fie desenat. 3. Parametrul variabil Height trebuie s fie ncrcat de utilizator, n care se stabilete nlimea n puncte a elementului actual al listei. Dup declanarea evenimentului OnMeasureItem se va declana evenimentul OnDrawItem, n care se va desena elementul actual al listei, pe baza nlimii definite. n timpul execuiei elementele din list pot fi gestionate cu metodele standard referitoare la iruri de caractere (TStrings). n afar de aceste metode pot fi folosite i urmtoarele metode specifice tratrii listelor: ItemRect i ItemAtPos. Funcia ItemRect Permite citirea coordonatelor unui element specificat al listei; ea se definete prin: Types::TRect __fastcall ItemRect(int Index);
52

unde parametrul Item specific indicele elementului analizat (cu valori ntre 0 i ListBox1->Items->Count-1). Funcia returneaz o valoare de tip TRect care conine coordonatele dreptunghiului de ncadrare corespunztor elementului. Tipul TRect se definete prin: struct TRect { TRect() {} TRect(const TPoint& TL, const TPoint& BR) { left=TL.x; top=TL.y; right=BR.x; bottom=BR.y; } TRect(int l, int t, int r, int b) { left=l; top=t; right=r; bottom=b; } TRect(RECT& r) { left = r.left; top = r.top; right = r.right; bottom = r.bottom; }.... Tipul TPoint se definete prin: struct TPoint { TPoint() {} TPoint(int _x, int _y) : x(_x), y(_y) {} TPoint(POINT& pt) { x = pt.x; y = pt.y; } Funcia ItemAtPos Permite testarea dac la un punct de coordonate date exist sau nu un element al listei. Funcia se definete prin: int __fastcall ItemAtPos(TPoint &Pos, bool Existing); Parametrul Pos desemneaz coordonatele punctului analizat (originea este n colul stnga sus al listei). Dac punctul analizat aparine unui element al listei, valoarea returnat de funcie este indicele elementului.

53

COMPONENTA ComboBox
Componenta Combobox (list combinat sau ascuns, de tip TComboBox) afieaz o linie de editare la care este ataat o list format din mai multe elemente din care utilizatorul poate s selecteze (de regul) un singur element. Dac utilizatorul selecteaz un element al listei, elementul respectiv va fi introdus n linia de editare. Este posibil i tastarea direct a unui ir de caractere n linia de editare a componentei. Componenta aparine paginii standard a paletei de componente. Adugarea unui element la list se realizeaz, de regul, n timpul elaborrii proiectului, prin intermediul proprietii Items. Adugarea elementelor la list poate fi realizat ns i n timpul execuiei, prin intermediul metodelor specifice irurilor de caractere. Indicele elementului selectat se determin prin proprietatea ItemIndex. Textul depus n linia de editare poate fi citit prin intermediului proprietii Text. Componenta list combin motenete att proprietile liniei de editare (de exemplu MaxLength, SelLenght, SelStart, SelText i altele), ct i proprietile listei simple (de exemplu Items, ItemIndex, ItemHeight, Sorted i altele). Proprietile specifice listelor combinate sunt urmtoarele: Proprietatea Style Stabilete stilul utilizat de lista combinat (modul de afiare a regiunilor liniei de editare i listei derulate). Proprietatea DropDownCount (de tip integer) Stabilete numrul maxim de elemente care se afieaz simultan ntr-o list derulat. Valoarea implicit este 8. Proprietatea DroppedDown (de tip boolean) Indic dac n momentul respectiv lista derulat este sau nu vizibil. Prin atribuirea valorii True acestei proprieti se poate fora deschiderea listei prin program. Dac acestei proprieti i se atribuie valoarea False, lista va fi nchis (ascuns). Cele mai importante evenimente referitoare la listele combinate sunt urmtoarele: Evenimentul OnChange Se declaneaz imediat dup ce utilizatorul a fcut modificri n textul afiat n linia de editare sau dup ce utilizatorul a selectat un element al listei (cu ajutorul mouse-ului sau cu tastele cu sgei). Noua valoare depus n linia de editare poate fi obinut prin intermediul proprietii Text.
54

Evenimentul OnDropDown Se declaneaz atunci, cnd utilizatorul deschide (activeaz) lista ataat componentei, prin efectuarea unui clic pe butonul situat n partea din dreapta liniei de editare. Evenimentul OnDrowItem i OnMeasureItem Sunt similare cu cele scrise la componenta list simpl.

COMPONENTA Screen
Obiectul Scren de tip TScreen n mod obinuit reprezint echipamentul de afiare utilizat de aplicaie. Acest obiect este considerat ca fiind o variabil global, deci accesibil oricrei aplicaii C++ Builder. Acest obiect permite obinerea de informaii prin altele despre urmtoarele elemente: - dimensiunea (limea i nlimea) ecranului; - rezoluia ecranului; - cursoarele accesibile aplicaiei; - fonturile accesibile aplicaiei; - numrul formelor afiate pe ecran. Principalele proprieti ale obiectului Screen sunt: - proprietatea de tip ntreg Height (dimensiunea vertical a ecranului, n puncte); - proprietatea de tip ntreg Width (dimensiunea orizontal a ecranului, n puncte); - proprietatea Fonts de tip Tstrings care reprezint lista numerelor de fonturi suportate de ecranul utilizat (n list nu se dau informaii despre fonturile de tip imprimant); numrul fonturilor poate fi citit din cmpul de tip ntreg Fonts.Count; - proprietatea de tip ntreg FormCount (numrul formelor afiate pe ecran); - proprietatea de tip ntreg PixelsPerInch (numrul punctelor ecranului aezate pe vertical pe o distan de 1 inch).

Ferestre generale de dialog


n sistemul C++ Builder se pune la dispoziie utilizatorului zece componente care permit afiarea i utilizarea acelor ferestre de dialog, care sunt specificate sistemului de operare Windows 95. Toate aceste componente sunt situate n pagina Dialogs a paletei de componente. Aceste ferestre de dialog pot fi deschise prin apelarea metodei Execute.

Componenta OpenDialog
Componenta OpenDialog (de tipul TOpenDialog) afieaz o fereastr de dialog specializat n selectarea i deschiderea fiierelor.
55

Proprietatea DefaultExt (de tip string) Specific extensia implicit de fiier, adic extensia care se adaug automat fiierului. Proprietatea FileName (de tip string) Returneaz numele fiierului cel mai recent selectat din fereastra de dialog (mpreun cu calea complet). Proprietatea Filter (de tip string) Stabilete mtile utilizate n fereastra de dialog. Mtile definite sunt accesibile prin intermediul listei ascunse etichetat cu Files of type.

Componenta SaveDialog
Componenta SaveDialog (de tip TSaveDialog) afieaz o fereastr de dialog specializat n salvri de fiiere.

Componenta OpenPictureDialog
Componenta OpenPictureDialog (de tip TOpenPictureDialog) afieaz o fereastr de dialog specializat n selectarea i deschiderea fiierelor grafice

Componenta SavePictureDialog
Componenta SavePictureDialog (de tip TSavePictureDialog) afieaz o fereeastr de dialog specializat n salvri de fiiere grafice.

Componenta FontDialog
Componenta FontDialog (de tip TFontDialog) afieaz o fereastr de dialog specializat n selectarea tipului i dimensiunii fontului, precum i pentru selectarea aspectului exterior al fontului.

Componenta ColorDialog
Componenta ColorDialog (de tipul TColorDialog) afieaz o fereastr de dialog specializat n selectarea unei culori.

Componenta PrintDialog
Componenta PrintDialog afieaz o fereastr de dialog prin care pot fi trimise diferite forme la imprimant.

Componenta PrinterSetupDialog
Componenta PrinterSetupDialog (de tip TPrinterSetupDialog) afieaz o fereastr de dialog prin care utilizatorul poate s selecteze i s instaleze diferite tipuri de imprimante.

Componenta FindDialog
Componenta FindDialog (de tip TFindDialog) afieaz o fereastr nemodal de dialog prin care utilizatorul poate localiza un text.

Componente pentru gestiunea fiierelor (pagina Win 3.1)


Componenta DriveComboBox
56

Componenta DriveComboBox (de tip TDriveComboBox) este o list ascuns special care n timpul execuiei afieaz toate unitile accesibile n sistemul de calcul i permite selectarea unitii necesare.

Componenta DirectoryListBox
Componenta DirectoryListBox (de tip TDirectoryListBox) este o list special care n tipul execuiei afieaz structura directoarelor (dosarelor) din unitatea actual i permite selectarea directorului necesar.

Componenta FilterComboBox
Componenta FilterComboBox (de tip TFilterComboBox) este o list ascuns care permite selectarea diferitelor filtre (mti) care sunt utilizate de componenta FileListBox.

Componenta FileListBox
Componenta FileListBox este o list special care afieaz toate fiierele dintr-un director specificat.

Gestiunea Tastaturii
n momentul n care utilizatorul apas o tast, atunci se declaneaz un eveniment denumit OnKeyDown. Acest eveniment se genereaz ntotdeauna, indiferent de faptul c n focar este o form sau o component arbitrar. Dac tasta apsat are ataat un cod ASCII, n continuare se declaneaz un alt evenimentul OnKeyPress. n momentul eliberrii tastei ntotdeauna se declaneaz un eveniment denumit OnKeyUp. Prototipul de tratare a evenimentelor OnKeyDown i OnKeyUp (n cazul unei forme) este urmtorul: Evenimentul OnKeyDown ataat unei forme: void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { }

Componenta Timer
Componenta Timer (ceas, de tip TTimer) este folosit atunci, cnd se dorete apelarea periodic a unei proceduri dup scurgerea unui anumit interval de timp, exprimat n milisecunde. Componenta se gsete n pagina System a paletei de componente. Este o component invizibil, care n fiecare interval de timp - specificat de utilizator - emite un semnal. Semnalul poate fi prelucrat prin metoda ataat evenimentului OnTimer. Numrul componentelor Timer care pot fi utilizate simultan depinde de sistemul de calcul utilizat. Proprietatea Interval Determin intervalul de timp n milisecunde ntre dou evenimente OnTimer. Valoarea implicit este 1000 (adic 1 secund). Dac se folosete valoarea 0, atunci evenimentul OnTimer nu va fi declanat. Proprietatea Enabled (de tip boolean) Stabilete dac ceasul este sau nu este pus n funcie. Valoarea implicit este True, adic ceasul validat (lucreaz). Dac se folosete valoarea False, ceasul este dezactivat, deci n acest caz nu se va apela functia ataat evenimentului OnTimer.

Gestiunea Mouse-ului
57

n sistemul C++ Builder pentru urmrirea mouse-ului sunt utilizate urmtoarele trei evenimente de baz: OnMouseDown utilizatorul a apsat un buton de mouse; OnMouseUp utilizatorul a eliberat un buton de mouse; OnMouseMove un buton de mouse fiind inut apsat, utilizatorul mut (gliseaz) mouse-ul; Aceste evenimente pot fi ataate att formelor, ct i componentelor. Prototipul de tratare a evenimentelor OnMouseDown i OnMouseUp (n cazul unei forme) este urmtorul: void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { } Parametru Sender Button Semnificaie Expeditorul. Numele componentei sau formei care a declanat evenimentul Comunic butonul de mouse acionat. Este o variabil de tip enumerare, care se definete prin TmouseButton = (mbLeft, mbRight, mbMiddle); mbLeft A fost acionat butonul stng. mbRight A fost acionat butonul drept. mbMiddle A fost acionat butonul din mijloc. Comunic starea actual a tastelor Shift, Alt, Ctrl i starea butoanelor de mouse. Este o variabil de tip mulime, care se definete prin: TshiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble); Mulimea poate s comporte urmtoarele valori: ssShif - n timpul acionrii butonului de mouse a fost apsat i tasta Shift. ssAlt - n timpul acionrii butonului de mouse a fost apsat i tasta Alt. ssCtrl - n timpul acionrii butonului de mouse a fost apsat i tasta Ctrl. ssLeft - A fost apsat butonul stng de mouse. ssRight - A fost apsat butonul drept de mouse. ssMiddle - A fost apsat butonul din mijloc de mouse-ului. SsDouble - S-a efectuat un dublu clic de mouse. Coordonatele cursorului de mouse (n raport de form sau component).

Shift

X,Y

Prototipul de tratare a evenimentului OnMouseMove (n cazul unei forme) este urmtorul: void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { } Semnificaia parametrilor este identic cu cea descris n tabelul precedent.

Operaia de tragere cu mouse-ul


58

Prin operaia de tragere cu mouse-ul (Drag&Drop) se nelege deplasarea pe ecran a diferitelor componente. Cele mai importante proprieti i evenimente legate de operaia de tragere cu mouse-ul sunt urmtoarele:
Prorpietatea DragMode Prorpietatea DragCursor Prorpietatea OnDragOver Prorpietatea OnDragDrop Este ataat componentei care va fi tras i aruncat ntr-o alt locaie, sau pe o alt component Sursa operaiei de tragere. Cu ajutorul acestei proprieti se poate determina forma cursorului utilizat n operaia de tragere i aruncare. Este ataat la componenta sau forma pe care se arunc o alt component. Destinaia operaiei de tragere. Este ataat la componenta sau forma pe care se arunc o alt component. Destinaia operaiei de tragere.

Proprietatea DragMode determin dac componenta surs poate fi tras i aruncat ntr-o alt component, ntr-o alt locaie a formei sau ntr-o alt form. Proprietatea are tipul de enumerare, valorile posibile sunt: dmAutomatic - componenta este gata pentru a fi tras i aruncat, operaia poate fi demarat prin procedura standard; dmManual componenta nu poate fi ataat i aruncat dect atunci, cnd se apeleaz o metod special de validare a operaiei (BeginDrag); valoare implicit. Proprietatea DragCursor Specific forma cursorului de mouse care se va utiliza n timpul tragerii. Valoarea implicit este crDrag, ns din lista aferent proprietii se poate selecta alt tip de cursor. Evenimentul OnDragOver Apare atunci, cnd deasupra unei forme sau componente trece o alt component. Evenimentul este ataat la forma sau componenta peste care se defileaz. Evenimentul este ataat la forma sau componenta peste care se defileaz. n cazul n care se analizeaz o defilare peste o form, functia standard are forma urmtoare: void __fastcall TForm1::FormDragOver(TObject *Sender, TObject *Source, int X, int Y, TDragState State, bool &Accept) { } Semnificaia parametrilor este centralizat n tabelul urmtor: Parametru Semnificaie Componenta sau forma pe care se va arunca (eventual) componenta tras. Sender Componenta care se trage (sursa). Source Cordonatele cursorului de mouse n raport cu obiectul destinaie. X,Y State Acest parametru de tip de enumerare specific starea obiectului tras n raport cu obiectul destinaie. Valorile posibile ale strii sunt: - dsDragEnter Obiectul tras acum este n interiorul obiectului de destinaie. - dsDragMove Obiectul tras a atins obiectul de destinaie. - dsDragLeave Obiectul tras a prsit obiectul de destinaie. Parametru variabil de tip logic prin care utilizatorul poate s accepte ca Accept obiectul tras s fie aruncat pe obiectul destinaiei. O component tras poate fi aruncat numai atunci, cnd acestui parametru i se atribuie valoarea True.
59

Dac parametrul i se d valoarea False, obiectul tras nu va fi acceptat. Evenimentul OnDragDrop Apare atunci, cnd obiectul tras este aruncat pe obiectul destinaie. Evenimentul este ataat la forma sau componenta pe care se arunc. n cazul aruncrii pe o form, functia standard are forma urmtoare: void __fastcall TForm1::FormDragDrop(TObject *Sender, TObject *Source, int X, int Y) { } Semnificaia parametrilor este centralizat n tabelul urmtor: Parametru Sender Source X,Y Semnificaie Componenta sau forma pe care se arunc (destinaia). Componenta care se arunc (sursa). Coordonatele cursorului de mouse n raport cu destinaia.

Componenta MainMenu
Componenta MainMenu (de tip TMainMenu) permite ataarea la diferite forme a unei bare cu un meniu principal. Elementele de meniu sunt obiecte care au tipul TMenuItem. Fiecrui element de meniu al meniului principal i se poate ataa o fereastr derulant. n fiecare fereastr derulant se poate introduce una sau mai multe elemente de meniu, care de asemenea sunt obiecte de tip TMenuItem. Elementele de meniu introduse n fereastra derulant sunt aezate - implicit - pe vertical. Unele elemente de meniu situate n meniul derulant pot fi nume de submeniuri; n acest caz dup numele meniului va apare un mic triunghi, care indic faptul, c n dreapta elementului respectiv apar elemente noi. Pentru a demara procesul de proiectare a meniului dat se aeaz pe form o component MainMenu. Dup ce pe form a fost aezat o component MainMenu se poate trece la lansarea n execuie a utilitarului de proiectare a meniului. Lansarea n execuie a acestui utilitar poate fi realizat n patru moduri: Se efectueaz un clic cu butonul drept al mouse-ului pe componenta MainMenu. Se afieaz un meniu flotant, din care se alege comanda MenuDesigner. Se efectueaz un dublu clic pe componenta MainMenu. Componenta MainMenu fiind selectat, n inspectorul de obiecte printr-un clic de mouse se selecteaz proprietatea Items, dup care se face un clic pe butonul de comand prevzut cu trei puncte. Acest buton se gsete n coloana de valori a proprietii Items. Componenta MainMenu fiind selectat, n inspectorul de obiecte se efectueaz un dublu clic n coloana de valori a proprietii Items.

Componenta PopupMenu
Componenta PopupMenu (de tip TPopupMenu) creeaz meniuri flotante (locale). Aceste meniuri pot fi afiate n execuie prin acionarea butonului drept de mouse.

60

Componenta Animate (pag. Win32)


Componenta Animate (de tip TAnimate) permite crearea unui control prin care se poate afia coninutul unui fiier de animaie, de extensie *.AVI (Audio Video Interleaved). Cele mai importante proprieti ale unei componente Animate sunt urmtoarele: Proprietatea Active (de tip boolean) Indic starea actual a animaiei. Valoarea True indic faptul, c animaia este activ, valoarea False indic contrariul. Proprietatea AutoSize (de tip boolean) Proprietatea Center (de tip boolean) Proprietatea FileName (de tip string) Desemneaz numele fiierului de animaie (*.AVI) care va fi afiat. Proprietatea FrameCount (de tip integer, read-only) Conine numrul clieelor din fiierul de animaie. Proprietatea FrameHeight (de tip integer, read-only) Desemneaz nlimea comun, n puncte, a clieelor fiierului de animaie. Proprietatea FrameWidth (de tip integer, read-only) Desemneaz limea comun, n puncte, a clieelor fiierului de animaie. Proprietatea Open (de tip boolean) Se refer la ncrcarea n memorie a fiierului *.AVI. Proprietatea Repetitions (de tip integer) Se refer la numrul de repetiii ale clieelor fiierului de animaie. Proprietatea StartFrame (de tip SmallInt) Desemneaz numrul primului clieu al fiierului de animaie care va fi afiat n momentul n care se activeaz controlul de animaie. Proprietatea StopFrame (de tip SmallInt) Desemneaz numrul ultimului clieu afiat al fiierului de animaie. Proprietatea Transparent (de tip boolean) Se refer la culoarea de fond memorat n fiierul *.AVI. Cele mai importante metode asociate unei componente Animate sunt urmtoarele: Metoda Play Afieaz un ir de secvene ale fiierului *.AVI. Metoda Reset terge valorile actuale ale proprietilor StartFrame i StopFrame, dup care afieaz primul clieu al fiierului *.AVI. Metoda Seek Afieaz un clieu specificat din fiierul *.AVI. Metoda Stop ntrerupe afiarea clieelor fiierului *.AVI. Cele mai importante evenimente ale componentei Animate sunt urmtoarele: Evenimentul OnOpen Se declaneaz n momentul n care valoarea proprietii Open transform din valoarea False n valoarea True. Evenimentul OnClose Evenimentul OnStart Evenimentul OnStop
61

COMPONENTA TRACKBAR
Componenta TrackBar (de tip TTrackBar) creeaz o bar prevzut cu un buton de glisare i eventual i cu o scal cu gradaii. n execuie poziia cursorului glisant poate fi modificat prin tragerea lui cu ajutorul mouse-ului sau prin efectuarea unui clic n stnga sau n dreapta cursorului. Poziia cursorului poate fi modificat i prin acionarea tastelor cu sgei sau a tastelor PageUp i PageDown. Bara de glisare poate s afieze i o regiune selectat, care este marcat prin indicatori triunghiulari. Proprietile i metodele barei de glisare sunt urmtoarele: Proprietatea Frequency (de tip integer) Stabilete distana ntre gradaiile scalei. Proprietile Min i Max (de tip integer) Sunt dou numere ntregi care definesc domeniul de variaie al indicatorului barei de glisare. Valorile implicite sunt 0, respectiv 10. Proprietate Orientation Specific orientarea barei. Valorile posibile sunt trHorizontal (orizontal, valoare implicit) sau trVertical (vertical). Proprietatea LineSize (de tip integer) Stabilete valoarea cu care se modific poziia cursorului glisant n momentul n care utilizatorul apas una din tastele cu sgei. Valoarea implicit a acestei proprieti este 1. Proprietatea PageSize (de tip integer) Stabilete valoarea cu care se modific poziia cursorului glisant n momentul n care utilizatorul apas una din tastele PageUp sau PageDown (sau n momentul n care se efectueaz un clic pe bara de glisare). Valoarea implicit a acestei proprieti este 2. Proprietatea Position (de tip integer) Comunic poziia actual a cursorului glisant al barei. Aceast valoare trebuie s fie n domeniul definit de proprietile Min i Max. Poziia cursorului poate fi modificat i prin program, prin atribuirea unei valori noi acestei proprieti. Valoarea implicit a proprietii este 0. Proprietatea TickMarks Stabilete locaia de afiare a gradaiilor barei. Proprietatea TickStyle Specific modul de desenare a gradaiilor barei. Proprietatea SetTick Deseneaz o gradaie a barei glisante ntr-o locaie specificat.

COMPONENTA TOOLBAR
Componenta ToolBar (de tip TToolBar) creeaz o bar n partea superioar a formei proprietar, pe care pot fi depuse diferite butoane speciale prevzute cu imagini grafice. Aceast component joac rolul unui container pentru mulime de butoane i ofer o metod simpl pentru gestiunea butoanelor aferente barei. Butoanelor barei le sunt asociate, de regul, diferite elemente de meniu. Butoanele au dimensiuni identice. Tipul predefinit al butoanelor este TToolButton.
62

Proprietile specifice ale unei bare de unelte (de tip TToolBar) sunt urmtoarele: Proprietatea Images (de tip TImageList) Conine o referin la o list de imagini care este ataat butoanelor barei de unelte. Dac acestei proprieti nu i se ataeaz nici o valoare, butoanele barei nu vor conine imagini grafice. Proprietatea AutoSize (de tip boolean) Se refer la nlimea barei de unelte. Proprietatea ButtonHeight (de tip integer) Definete nlimea comun a butoanelor introduse n bar. Proprietatea ButtonWidht (de tip integer) Definete limea comun a butoanelor introduse n bar. Proprietatea Flat (de tip boolean) Se refer la transparena barei de unelte. Proprietatea Indent (de tip integer) Permite crearea unei margini de lime specificat la extremitatea din stnga barei de unelte. Proprietatea List (de tip boolean) Se refer la alinierea etichetelor i imaginilor afiate pe butoanele barei. Proprietatea ShowCaptions (de tip boolean) Determin dac etichetele ataate butoanelor sunt afiate sau nu. Proprietatea Wrapable (de tip boolean) Se refer la posibilitatea afirii pe mai multe linii a butoanelor barei de unelte. Proprietile specifice ale unui buton (de tip TToolButton) plasat pe o bar de unelte sunt urmtoarele: Proprietatea AllowAllUp (de tip boolean) Se refer la modul de prelucrare a grupurilor de butoane. Dac se alege variante True, atunci este posibil, ca nici un buton al grupului s nu fie selectat (nici un buton al grupului s nu fie apsat). Dac se alege varianta False, n fiecare moment cel puin un buton al grupului trebuie s fie selectat. Proprietatea Down (de tip boolean) Specific starea de selecie a butonului. Dac se alege varianta True, butonul este selectat (apsat); n caz contrar butonul nu este selectat (nu este apsat). Valoarea implicit este False. Proprietatea DropdownMenu (de tip TPopupMenu) Desemneaz un meniu flotant, care este ataat butonului respectiv. Butonul trebuie s aib stilul tbsDropDown. Proprietatea ImageIndex (de tip integer) Stabilete imaginea care va fi afiat pe butonul respectiv. Proprietatea Indeterminate (de tip boolean) Se refer la posibilitatea utilizrii a trei stri distincte ale butonului respectiv.

Crearea obiectelor C++ Builder n timpul execuiei


Adeseori se ivete situaia prin care n timpul execuiei programului trebuie s fie diverse obiecte C++ Builder. S-ar putea s avem nevoie de o list de iruri de caractere (de tip TStringList) utilizat pentru memorarea diferitelor date; dar se pot concepe i situaii,
63

n care n timpul execuiei se creeaz diferite componente sau chiar forme. Evident, aceste componente sau forme pot fi create i n perioada de elaborare a proiectului; ele pot fi ascunse pn n momentul n care avem nevoie de ele. n acest caz ns componentele sau formele sunt ncrcate n memorie, chiar i n momentele n care ele nu sunt necesare. n felul acesta sunt utilizate mari cantiti de memorie, astfel c durata de execuie a aplicaiei va crete simitor. Pentru crearea n timpul execuiei a diferitelor obiecte C++ Builder se va proceda astfel: 1. n seciunea de declaraii a formei principale se selecteaz un cmp de tipul obiectului care urmeaz s fie dinamic (de exemplu TstringList, TBitBtn, Tform): TStringList *ListaMea=new TStringList; } 2. Se ncarc obiectul cu informaiile necesare i se prelucreaz informaiile memorate. 3. n momentul n care obiectul nu mai este necesar, se apeleaz destructorul al obiectului creat anterior, care de regul se introduce n functia corespunztoare evenimentului OnDestroy al formei principale: try{ //utilizeaz lista } __finally{ delete ListaMea; // distruge obiectul lista }

Componente utilizate n gestiunea bazelor de date


n procesul de gestiune a bazelor de date sistemul C++Builder utilizeaz trei categorii de componente: 1. o component Table pentru descrierea bazei de date; 2. o component de transmisie a datelor ntre componenta de descriere a bazelor de date i componentele vizuale; pentru realizarea acestei transmisii se utilizeaz componenta DataSource; 3. un numr de componente vizuale, care permit afiarea i editarea articolelor unei baze de date, de exemplu DBGrid, DBNavigator, DBText, DBEdit, DBMemo, DBImage, DBCheckBox, DBListBox, DBComboBox i DBRadioGroup. Figura urmtoare ilustreaz modul de nlluire a acestor elemente:

64

DBGrid

DBNavigator

DBText

DBEdit

DBMemo Table DataSource DBImage

DBRadioGroup

DBListBox

DBComboBox

Schema logic a procesului de realizare a aplicaiilor orientate spre prelucrarea bazelor de date este urmtoarea: 1. Se aeaz pe form o component Table. Numele componentei este Table1. 2. n proprietatea DatabaseName se introduce calea complet spre dosarul (directorul) care conine baza de date care urmeaz s fie prelucrat, de exemplu C:\My Programs. 3. n proprietatea TableName se introduce numele tabelei de date, de exemplu CARTI.DBF 4. Se iniializeaz proprietatea Active cu valoarea True, prin care se deschide baza de date care se va prelucra. 5. Se aeaz pe form o component DataSource. Numele componentei este DataSource1. 6. n proprietatea DataSet se introduce numele componentei Table utilizate. n acest scop se va efectua un clic pe butonul sgeat jos care se gsete n coloana de valori a proprietii DataSet; din lista afiat se selecteaz numele componentei Table care va fi utilizat, n acest caz Table1. 7. Se aeaz pe form o component DBGrid i/sau o component DBNavigator. Componenta DBGrid afieaz o reea de celule n care sunt afiate toate articolele bazei de date, n fiecare linie fiind afiat un singur articol. Numrul liniilor reelei este egal cu numrul articolelor bazei de date plus unu (linia suplimentar este necesar pentru afiarea numelor de cmpuri ale bazei, care
65

este prima linie). Numrul coloanelor reelei este egal cu numrul cmpurilor bazei de date. Componenta DBNavigator afieaz o bar prevzut cu diferite butoane prin care se poate naviga printre articolele bazei i se pot realiza inserri, editri i tergeri de articole. 8. Att componenta DBGrid, ct i componenta DBNavigator trebuie nlnuit cu componenta DataSource. n acest scop n proprietatea DataSource se va introduce numele sursei de date. Se va efectua un clic pe butonul sgeat jos care se gsete n coloana de valori a proprietii DataSource i din lista afiat se selecteaz numele componentei DataSource care va fi utilizat, n acest caz DataSource1. 9. n continuare se aeaz pe form diferite componente vizuale, care permit afiarea i editarea unor cmpuri selectate ale articolului actual. Aceste componente sunt DBText, DBEdit, DBMemo, DBImage, DBCheckBox, DBListBox, DBComboBox i component DBEdit, atunci se va afia o linie de editare, n care se afieaz valoarea cmpului selectat al articolului actual (selectarea acestui cmp se face pe baza informaiilor din pasul 11). 10. Se nlnuie componenta vizual selectat cu componenta DataSource. n acest scop n proprietatea DataSource se va introduce numele sursei de date. Se va efectua un clic pe butonul sgeat jos care se gsete n coloana de valori a proprietii DataSource i din lista afiat se selecteaz numele componentei DataSource care va fi utilizat, n acest caz DataSource1. 11. Cmpul prelucrat n componenta vizual a bazei de date se stabilete prin proprietatea DataField a componentei. n acest scop se va efectua clic pe butonul sgeat jos care se gsete n coloana de valori a proprietii DataField i din lista afiat se selecteaz numele cmpului bazei care va fi utilizat. Lista afieaz fiecare nume de cmp al bazei. Dac componenta vizual utilizat este DBListBox, DBComboBox sau DBRadioGroup, atunci trebuie iniializat i cmpul Items. Proprietile specifice ale componentelor Table sunt urmtoarele: Proprietatea DatabaseName (de tip string) Specific calea complet spre directorul (dosarul) n care este memorat baza de date care se prelucreaz. Numele tabelei de date este specificat n proprietatea TableName. S presupunem c baza de date este memorat n dosarul My Programs, unitatea C. n acest caz proprietatea DatabaseName trebuie iniializat cu valoarea C:\My Programs. Proprietatea Active (de tip Boolean) Specific dac tabela de date este deschisa sau nu. Dac se alege varianta True, atunci tabela este deschis, deci se pot efectua operaiile de citire i de scriere a articolelor bazei. Dac se alege varianta False, tabela este nchis, deci nu pot fi citite sau scrise diverse articole ale bazei. Dac se dorete modificarea unor proprieti ale bazei de date, atunci tabela prima dat trebuie nchis iar dup efectuarea modificrilor trebuie din nou redeschis. n execuie tabela poate fi deschis i prin metoda Open, de exemplu prin instruciunea Table1.Open;, care este echivalent cu instruciunea Table1->Active=True;. n execuie o tabela poate fi nchis i prin metoda Close, de exemplu prin instruciunea Table1->Close; care este echivalent cu instruciunea Table1->Active=False;.
66

Proprietatea IndexName (de tip string) Identific un nume de index ataat unei baze de date (un nume de index de regul este numele unui cmp al bazei, ns se poate construi i o expresie folosind diverse nume de cmpuri). Aceast proprietate stabilete cmpul care este utilizat pentru sortarea articolelor bazei. n cazul n care aceast proprietate nu este specificat, atunci ordinea de sortare este stabilit de ordinea fizic a articolelor. Proprietatea MasterSource i MasterFields Sunt utilizate la aplicaiile de tip master-detaliu. n cazul acestor aplicaii se lucreaz cu dou tabele de date. Una dintre tabele, denumit master, coordoneaz afiarea articolelor ntr-o component DBGrid sau DBNavigator ale celeilalte tabele, care este denumit detaliu. S presupunem c tabela master este prevzut cu un nume de index, de exemplu PERSIMPR. Acest nume de index este refereniat n proprietatea MasterFields a tabelei detaliu. S presupunem c tabela detaliu este prevzut cu un nume de index, de exemplu CODCITITOR. Cu ajutorul proprietilor MasterSource i MasterFileds se realizeaz o nlnuire ntre cele dou nume de indeci PERSIMPR i CODCITITOR. n componenta DBGrid sau DBNavigator corespunztor tabelei detaliu vor fi afiate numai articole din detaliu, pentru care valoarea actual din cmpul CODCITITOR coincide cu valoarea actual existent n cmpul PERSIMPR. Proprietatea MasterSource (de tip TDataSource) Aparine tabelei detaliu i specific numele componentei DataSource utilizat de baz master. Proprietatea MasterFields (de tip string) Specific un nume de cmp sau mai multe nume de cmp ale unei tabele master separate cu caracter ;; ele trebuie s fie nume de indeci ale tabelei master. Proprietatea MasterFields trebuie definit doar dup ce a fost specificat proprietatea MasterSource. S presupunem, c n tabela master se trece la un alt articol. n acest moment sunt analizate valorile actuale ale cmpurilor din tabela master specificate n proprietatea MasterFields ale tabelei detaliu. Din tabela detaliu vor fi afiate numai acele articole, pentru care valoarea cmpului specificat de cmpul IndexName al bazei detaliu coincide cu valorile actuale din cmpurile MasterFields ale tabelei master.

Principalele componente vizuale utilizate n gestiunea bazelor


Simbolurile grafice ale componentelor vizuale utilizate n gestiunea bazelor de date sunt afiate n pagina Data Controls a paletei de componente. Cele mai uzuale componente sunt urmtoarele: Componenta DBGrid (de tip TBGrid) Afieaz articolele bazei de date ntr-o reea de celule. Coninutul diferitelor celule poate fi editat. n fiecare linie a reelei se afieaz un articol la bazei de date. Prima linie a reelei conine nume de cmpuri ale bazei de date. Componenta DBNavigator (de tip TBNavigator)
67

Afieaz o bar cu diferite butoane, cu ajutorul crora se poate naviga printre articolele bazei de date i pot fi efectuate diferite operaii de editare Funciile butoanelor barei sunt centralizate n tabelul urmtor: Buton Funcie Trecere la primul articol al bazei de date. First Prior Trecere la articolul precedent al bazei de date Next Trecere la articolul urmtor al bazei de date. Last Trecere la ultimul articol al bazei de date. Insert Inserarea unui articol nou n faa articolului actual. Delete tergerea articolului actual. Edit Editarea articolului actual. Post Acceptarea editrilor efectuate n articolul actual i scrierea articolului modificat n baza de date. Cancel Anularea editrilor efectuate n articolul actual i reafiarea coninutului iniial al articolului. Refresh Reactualizarea afirii articolului curent. Se folosete atunci, cnd baza de date poate fi modificat i de alte aplicaii. Componenta DBText Afieaz coninutul unui cmp specificat din articolul actual al tabelei, sub forma unei etichete. Specificarea cmpului se realizeaz prin proprietatea DataField. Coninutul cmpului afiat poate fi modificat. Componenta DBEdit Afieaz unui cmp specificat actual al bazei de date, sub forma unei linii de editare. Specificarea cmpului se realizeaz prin proprietatea DataField. Coninutul cmpului afiat poate fi modificat. Componenta DBMemo Afieaz coninutul unui cmp specificat din articolul actual al tabelei, sub forma unui memo. Specificarea cmpului se realizeaz prin proprietatea DataField. Coninutul cmpului afiat poate fi modificat. Componenta este utilizat pentru editarea cmpurilor de tip BLOB (Binary Large Object), de regul imagini grafice. D. Componenta DBImage Afieaz coninutul unui cmp specificat din articolul actual al bazei de date, sub forma unei componente de tip TImage. Tipul cmpului afiat este BLOB. Specificarea cmpului se realizeaz prin proprietatea DataField. Coninutul imaginii afiate poate fi modificat, prin intermediul zonei Clipboard. Metodele utilizate n prelucrarea imaginii sunt: - CopyToClipboard (copirea imaginii in Clipboard); - CutToClipboard (tergerea imaginii i copierea ei in Clipboard); - PasteFromClipboard (ncrcarea cmpului cu imaginea memorat n Clipboard). Componenta DBCheckBox Afieaz coninutul unui cmp specificat din articolul actual al bazei de date, sub forma unui buton de opiune. Specificarea cmpului se realizeaz prin proprietatea
68

DataField. Coninutul cmpului afiat poate fi modificat. Componenta este utilizat pentru vizualizarea valorilor logice. Dac valoarea cmpului este True, butonul de opiune este selectat i n interiorul butonului este afiat cu caracter X. Dac valoarea cmpului este False, butonul de opiune nu este selectat i interiorul butonului este vid. Componenta DBListBox Afieaz coninutul unui cmp specificat din articolul actual al tabelei, sub forma unei liste simple. Specificarea cmpului se realizeaz prin proprietatea DataField. Valoarea actual a cmpului este indicat prin elementul selectat al listei. Dac valoarea actual nu apare n list, atunci nici un element al listei nu este selectat. Dac utilizatorul selecteaz un element al listei, atunci elementul selectat devine valoarea curent a cmpului. Lista conine un numr de elemente, care reprezint valorile posibile ale cmpului desemnate de proprietatea DataField. Valorile afieaz n list sunt stabilite de proprietatea Items. Aceast proprietate are tipul TStringList (tabel de iruri de caracter), deci ncarc valorilor posibile se realizeaz prin editorul standard de iruri de caractere. Editorul poate fi lansat n execuie prin aplicarea unui clic pe butonul cu trei puncte, situat n coloana de valori ai proprietii Items. Componenta DBComboBox Afieaz coninutul unui cmp specificat din articolul actual al tabelei, sub forma unei liste combinate. Specificarea cmpului se realizeaz prin proprietatea DataField. Valoarea actual a cmpului este indicat prin valoarea afiat n linia de editare a listei de editare. Dac valoarea actual nu apare n list, atunci linia de editare este vid. Dac utilizatorul selecteaz un element al listei sau dac introduce o nou valoare n linia de editare, atunci valoarea selectat devine valoarea curent a cmpului. Lista combinat conine un numr de elemente, care reprezint valorile posibile ale cmpului desemnat de proprietatea DataField. Valorile afiate n lista combinat sunt stabilite de proprietatea Items. E. Componenta DBRadioGroup Afieaz coninutul unui cmp specificat din articolul actual al tabelei, sub forma unui grup de butoane radio. Specificarea cmpului se realizeaz prin proprietatea DataField. Valoarea actual a cmpului este indicat prin butonul de radio selectat din grup. Eticheta ataat butonului selectat reprezint valoarea curent a cmpului. Dac valoarea actual nu apare n mulimea etichetelor grupului de radio, atunci nici un buton de radio nu este selectat. Dac utilizatorul selecteaz un buton de radio, atunci eticheta butonului selectat devine valoarea curent a cmpului. Grupul de radio conine un numr de butoane de radio, ale cror etichete reprezint valorile posibile ale cmpului desemnate de proprietatea DataField. Etichetele afiate n grupul de butoane radio sunt stabilite de proprietatea Items. Tabelul urmtor centralizeaz componentele vizuale des utilizate n gestiunea bazelor de date, precum i proprietile care trebuie s fie iniializate cu o valoare n perioada de elaborare a proiectului sau n execuie: Component Proprieti care trebuie s fie iniializate DBGrid DataSource DBNavigator DataSource
69

DBText DBEdit DBMemo DBImage DBCheckBox DBListBox DBComboBox DBRadioGroup

DataSource DataSource DataSource DataSource DataSource DataSource DataSource DataSource

DataField DataField DataField DataField DataField DataField DataField DataField

Items Items Items

70

You might also like