Componenta DBEdit Componenta DBMemo Componenta DBImage Componenta DBListBox Componenta DBComboBox Componenta DBRadioGroup Componenta DBCheckBox Componentele DBLookupListBox i DBLookupComboBox Componenta DBRichEdit Componenta DBCtrlGrid Alte componente de date ntrebri i rspunsuri Chestionar Exerciii 3.2.5 COMPONENTA BDEDIT Componenta BDEdit afieaz coninutul unui cmp specificat, din articolul actual al bazei de date, sub forma unei linii de ediate, efectund astfel controlul editrii. Specificarea cmpului se realizeaz prin proprietatea Dataield. Coninutul cmpului afiat poate fi modificat. Componenta BDEdit, ca i componenta DBText, nu o!er" propriet"#i$ metode i e%enimente speci!ice ba&elor de date, altele dect cele comune tuturor componentelor. 3.2. COMPONENTA DBMEMO Componenta DBMemo este ersiunea de date a componentei !emo standard. Se a folosi aceast component pentru a se afia datele din cmpurile bazei de date care conin cantiti mari de text. "roprieti ce se or seta# Specificarea cmpului se realizeaz prin proprietatea Dataield. Coninutul cmpului afiat poate fi modificat. "roprietatea AutoDispla' controleaz dac datele din cmpurile irului de date sunt afiate automat atunci cnd cursorul se mut la o alt $nre%istrare. Cnd &utoDispla' este actiat ( True ( datele sunt afiate automat. Cnd &utodispla' este dezactiat ( )alse ( utilizatorul trebuie s dea dublu clic* pe DB!emo pentru a afia datele +sau s apese Enter,. "entru a fora memo-ul s afieze coninutul su prin cod, se a folosi o metod $nrudit numit LoadMemo. &ceast metod se a folosi numai atunci cnd &utoDispla' este dezactiat ( )alse. ./ 3.2.! COMPONENTA DBIMA"E Componenta DBImage este folsit pentru a a!ia date cu obiecte binare mari +BLOB, care sunt stocate $n format ima%ine. DB0ma%e nu este neaprat o component care poate fi doar citit. Se poate sc1imba o ima%ine prin afiarea ima%inii din clipboard sau folosind proprietatea "icture pentru a $ncrca fiierul de pe disc. 2rmtoarea linie de cod a sc1imba ima%inea $n timpul rulrii pro%ramului# DBImage1.Picture.LoadFromFile(peregrine.bmp); "rincipalele proprieti DB0ma%e controleaz modul $n care ima%inea este afiat. Sunt descrise dup cum urmeaz# "roprietatea AutoDispla' funcioneaz exact cum a fost descris de componenta DB!emo. !etoda Load(icture poate fi folosit pentru a afia ima%inea atunci cnd proprietatea &utoDispla' este dezactiat ( )alse. "roprietatea (icture permite accesul la ima%inea $n sine i funcioneaz la fel cum funcioneaz pentru componenta 0ma%e standard. "roprietatea Center determin ca ima%inea s fie centrat $n fereastra DB0ma%e. "roprietatea )tretch determin posibilitatea de micorare a ima%ini pentru a se potrii mrimii curente a ferestrei DB0ma%e sau dac se solicit afiarea la dimensiunea ei ori%inal. Dac Stretc1 este dezactiat ( )alse ( o parte a ima%inii a fi tiat dac ima%inea este prea mare pentru fereastra DB0ma%e. "roprietatea *uickDra+ determin dac se a aplica o palet de culori ima%inii atunci cnd este afiat. Cnd 3uic*Dra4 este actiat ( True ( nu se folosete nici o palet de culori. Cnd este dezactiat, se folosete o palet pentru a afia ima%inea, ceea ce determin o calitate mai bun, dar o performan puin mai mic la afiarea ima%inii. Metodele componentei DB0ma%e includ Cut,oClipboard$ Cop',oClipboard i (asteromClipboard- &ceste metode fac exact ceea ce spune i numele lor. 3.2.# COMPONENTA DBLISTBO$ Componenta DBListBox este, $n mare parte, o fereastr tip list standard. Ceea ce o difereniaz de o astfel de fereastr este faptul c atunci cnd utilizatorul selecteaz un articol din list, articolul selectat este scris $n cmpul corespunztor din irul de date. Componenta DB5istBox afieaz coninutul unui cmp specificat din articolul actual al bazei de date, sub forma unei liste simple. 6n acest scop se or seta proprietile Dataield i Items- Specificarea cmpului se realizezaz prin proprietatea Dataield. Dac utilizatorul selecteaz un element al listei, atunci elementul selectat deine aloarea curent a cmpului. 5ista conine un numr de elemente, care reprezint alorile posibile ale cmpului desemnate de proprietatea Data)ield. .. 7alorile afiate $n list sunt stabilite de proprietatea Items. &ceast proprietate are tipul ,)tringList +tabel de iruri de caractere,, deci $ncrcarea alorilor 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 alori a proprietii 0tems. Este important s se realizeze c seriile din list nu in din baza de date +pentru aceasta este DBLook.pListBox,. 3.2.% COMPONENTA DBCOMBOBO$ Componenta DBComboBox funcioneaz exact $n acelai mod ca i componenta DB5istBox exceptnd diferenele clare $ntre o fereastr list i o fereastr combo box. &fieaz coninutul unui cmp specificat, din articolul actual al bazei de date, sub forma unei liste combinate. Specificarea cmpului se realizezaz prin proprietatea Dataield. 7aloarea actual a cmpului este indicat prin aloarea afiat $n linia de editare a listei combinate. Dac aloarea actual nu apare $n list, atunci linia de editare este id. Dac utilizatorul selecteaz un element al listei sau dac introduce o nou aloare $n lista de editare, atunci aloarea selectat deine aloarea curent a cmpului. 5ista combinat conine un numr de elemente, care reprezint alorile posibile ale cmpului desemnat de proprietatea Data)ield. 7alorile afiate $n lista combinat sunt stabilite de proprietatea Items. 3.2.&' COMPONENTA DBC(EC)BO$ Componenta DBChecBox afieaz coninutul unui cmp specificat, din articolul actual al bazei de date, sub forma unui buton de opiune. Specificarea cmpului se realizeaz prin proprietatea Dataield. Coninutul cmpului afiat poate fi modificat. Componenta este utilizat pentru izualizarea alorilor lo%ice. Dac aloarea cmpului este ,rue, butonul de opiune este selectat i $n interiorul butonului este afiat un caracter 8$9. Dac aloarea cmpului este alse, butonul de opiune nu este selecat i interiorul butonului este id. 3.2.&& COMPONENTA DB*ADIO"*OUP Componenta DB!adio"roup funcioneaz asemntor componentelor DB5istBox i DBComboBox. &fieaz coninutul unui cmp specificat din articolul actual al bazei de date, sub forma unui %rup de butoane radio. Specifiacrea cmpului se realizeaz prin proprietatea Dataield. 7aloarea actual a cmpului este indicat prin butonul de radio selectat din %rup. Etic1eta etaat butonului selectat reprezint aloarea curent a cmpului. Dac aloarea actual nu apare, $n mulimea etic1etelor %rupului de radio, atunci nici un buton de radio nu este selectat. Dac utilizatorul selecteaz un buton de radio, atunci etic1eta butonului selectat deine aloarea curent a cmpului. .: ;rupul de radio conine un numr de butoane radio, ale cror etic1ete reprezint alorile posibile ale cmpului desemnate de proprietatea Data)ield. Etic1etele afiate $n %rupul de butone radio sunt stabilite de proprietatea Items. "roprietatea /alues pstreaz aloarea curent a cmpului $n baza de date. Se a folosi proprietatea 7alues pentru a sc1imba irul afiat $n fereastra de %rup radio cu un ir diferit. De exemplu, se poate realiza o fereastr de %rup radio cu butoane radio denumite 5uni, !ari i <oi. =ricum, baza de date poate stoca coduri precum 5, ! i < $n loc de numele complete. Dat fiind acest scenariu, se a putea seta proprietatea 7alues +o list de iruri, astfel# L M < 6n acest caz, atunci cnd butonul radio este selectat, $n cmpul din baza de date a fi scris codul coninut de litera selectat, $n loc s fie afiat irul butonului radio selectat. Dac proprietatea 7alues este %oal, irul afiat al butonului radio a fi scris $n baza de date atunci cnd este apsat butonul radio. 3.2.&2 COMPONENTELE DBLOO)UPLISTBO$ +I DBLOO)UPCOMBOBO$ Componenta DBLooupListBox permite s se afieze o list" de %alori de c0mpuri dintr- un cmp cutat. Spre deosebire de componenta DB5oo*upComboBox, lista nu este dat de pro%ramator> este dat de un ir separat de date. Se seteaz proprietile Data)ource i Dataield $n irul de date i cmpul unde a fi scris selecia de date. Se seteaz proprietile List)ource i Listield pentru a %si cmpul din care trebuie %enerat lista. Componenta DBLooupComboBox funcioneaz exact ca DB5oo*up5istBox. 6n plus, proprietile DropDo+nAlign$ DropDo+nRo+s i DropDo+n1idth controleaz modul $n care se formeaz listele prin 8tra%ere9. 3.2.&3 COMPONENTA DB*IC(EDIT Componenta DB!ichEdit permite s se a!ie&e i edite&e c0mpuri de tip memo rich text $ntr-un ir de date. (roprietatea AutoDispla' i metoda LoadMemo funcioneaz exact cum funcioneaz i pentru componenta DB!emo. 3.2.&, COMPONENTA DBCT*L"*ID Componenta DBCtrl"rid permite s se cree&e componente tabelare rulabile particulari&ate- Se poate plasa orice component de date $n prima celul a DBCtrl;rid +sau orice alt component,, i Depl1i a multiplica aceast component pentru fiecare $nre%istrare din irul de date. .? = ilustrare a@ut ca aceast explicaie s aib mai mult sens. )i%ura urmtoare arat o form care conine o component DBCtrl;rid care a fost alineat astfel $nct umple aria de client a formei. DBCtrl;rid conine o component DBEdit, DB!emo i DB0ma%e. Toate componentele de date sunt plasate $n prima celul a tabelului. & doua celul conine un model de 1aurare care spune c nu se poate plasa o component $n acea celul. & se edea exemplul din )i% nr. :./ 8Crearea unei componente DBCtrlGrid9 i )i% nr. :.. 8Componenta DBCtrlGrid 2n timpul rul"rii9. ig nr- 3-4 Crearea unei componente DBCtrlGrid ig nr- 3-5 Componenta DBCtrlGrid 2n timpul rul"rii DBCtrl;rid are ctea propriet"#i care merit menionate# "roprietatea 6rientation se a folosi pentru a determina dac trebuie plasat o bar de deplasare i cum acioneaz componenta dac se apas pe bara de deplasare. "roprietile (anel1idth i (anel7eight se folosesc pentru a stabili limea i $nlimea celulelor din tabel. "roprietatea Ro+Count determin cte $nre%istrri de afieaz odat. Componenta DBCtrl;rid are un e#eniment$ 6n(aint(anel. &cest eeniment este acionat de fiecare dat cnd o celul a tabelului trebuie pictat. Se poate rspunde la acest eeniment, pentru a desena pe fundalul panelului. Desenarea se realizeaz numai pentru fundalul panelului, restul de pe tabel or fi pictate automat. 3.2.&5 ALTE COMPONENTE DE DATE DBChart este o component" de gra!ice inclus $n ersiunile "rofessional i ClientASerer ale Delp1i. &ceast component nu este doar puternic, ci i complex. .B 7ersiunea ClientASerer a Delp1i include Decision Cube, care conine $nc C componente. &ceste componente permit s se fac o analiz de date complex cum ar fi tabularea $ncruciat, tabele i %rafice piot i a%re%area datelor. Tabelul urmtor centralizeaz componentele izuale cele mai utilizate $n %estiunea bazelor de date, precum i proprietile care trebuie s fie iniializate cu o aloare $n perioada de elaborare a proiectului sau $n execuie# Tabelul nr :./ Co-.onente /isua0e 1e tre2uie ini3ia0i4ate Co-.onent5 Pro.riet53i 1are tre2uie s5 6ie ini3ia0i4ate DBGrid Data)ource DB8a%igator Data)ource DB,ext Data)ource Dataield DBEdit Data)ource Dataield DBMemo Data)ource Dataield DBImage Data)ource Dataield DBCheckBox Data)ource Dataield DBListBox Data)ource Dataield Items DBComboBox Data)ource Dataield Items DBRadioGroup Data)ource Dataield Items COMPONENTA "*OUPBO$ Componenta "rou.Bo7 +cutie de%rupare de tip T;roupBox, ete un container. Componentele plasate $n interiorul ein or aparine aceluiai %rup. Datorit acestei caracteristici ele or putea fi depl*sate simultan. 6ntre componenta ;roupBox i componentele plasate $n interiorul ei se creaz o relaie de tip prite ( copil. &ceast component a fi folosit pentru %ruparea lo%ic a diferitelor componente. Se %sete $n pat%ina standard a paletei de componente i are simbolul %rafic . Du are proprieti i metode specifice. "roprietatea Align a fi $ntlnit la toate componentele de tip %rup. &ceast propreitate controleaz modul cum componenta este selectat relati la printele su. 7alorile posibile pentru aceast proprietate i o descriere a fiecreia este dat $n tabelul de mai @os# Valoare Descriere alBottom Aceast proprietate face alinierea n partea de jos a ferestrei printe. alClient Componenta este extins pentru a umple ntreaga zon client a ferestrei printe. Dac alte componente ocupau pri din aceast zon componet GroupBox vor umple ceea ce a rmas. Exemplu componetele memo! componentele de tip imagine "i componentele #ic$Edit . al%eft Componenta este aliniat la marginea din st&nga a ferestrei printe. ' (ar de unelte vertical este un exemplu n acest sens. al)one Componenta este plasat fr a avea vreo relaie special cu fereasta printele. Aceasta opiune este implicit pentru majoritatea .C Componenta ima%ine a fost plasat la stn%a, iar componenta ;roupBox a ocupat restul formei, dei s-a folosit opiunea a0C0ient8 pa%in plin. componentelor. al#ig$t Componeta este aliniat la marginea dreapt a ferestrei printe. al*op Componenta este aliniat la partea de sus a ferestrei printe. "roprietatea Caption a fi folosit pentru a sc1imba numele %rupului. Vizualizarea articolelor din baza de date prin machet = alt ariant de a izualiza articolele dintr-un tabel al bazei de date o constituie aducerea acestora, cmp de cmp, $n csue de editare. 6n acest scop se or construi mac1ete, alctuite din %rupuri de etic1ete i csue de editare, pentru toate cmpurile care se doresc a fi izualizate. "entru ca forma s fie mai atracti, se a realiza mac1eta de cutare $ntr-un ;roupBox +cutie de %rupare,. Componenta GroupBox permite ataarea pe ea a altor componente isuale sau non-isuale. Cutarea $n fiier se a realiza prin bara de nai%are. "entru a simula un meniu de cutare, $n baza de date, bara de nai%are se a fixa pe o component de tip container i anume componenta (anel poziionat $n extremitatea de sus o form-ului. De exemplu, consultarea fiierului Clienti, cu structura prezentat $n ig nr- 9)tructura !iierului Clienti9 i izualizarea articolelor, prin intermediul unei mac1ete, presupune parcur%erea mai multor etape de lucru dup cum urmeaz. ig nr- )tructura !iierului Clienti Eta.e 9e 0u1ru# $% Din pa%ina &tandard a paletei de componente se selecteaz componenta 'anel. "rintr-un clic* de mouse se fixeaz pe form. Se creaz o component de tip container care se a folosi pentru a se crea pe ea bara de nai%are. 5a proprietatea Caption se a ter%e numele implicit care a fost (anel4. "roprietatea Align se seteaz pe al,op. 6n urma acestei opetaii componenta a ocupa partea superioar a formei. (% Din pa%ina &tandard a paletei de componente se selecteaz componenta "roupBox +cutie de %rupare, i se depune pe form, s-a creat astfel o cutie de %rupare $n care pot fi depuse alte componente. "entru a i se atribui nume %rupului se selecteaz proprietatea Caption i se a scrie numele acestuia +de exemplu 8Clienti9,. 6n colul din stn%a sus a apare scris numele %ripului. Se a selecta proprietatea Align i se a seta pe alClient, cutia de %rupare a ocupa $ntrea%a suprafa a formei, ramas dup plasarea panoului. )% Din pa%ina DataControls se a selecta componenta DB*a#igator i de depune pe componenta (anel de pe form. Se creaz $n felul acesta un panou format din mai multe butoane de comand prin intermediul crora se poate nai%a printre articolele bazei de date. "anoul poate fi complectat cu alte butoane de comand prin care pot fi inserate $n baz articole noi, pot fi terse articole sau se poate edita coninutul unor articole. "entru a fi .E acti, bara de nai%are se cupleaz la sursa de date, setndu-i proprietatea Data)ource pe Data)ource4 +ulterior dup ce s-a inserat DataSource pe )orm,. +% Se or duce pe form cele trei componente nono-isuale necesare conectrii la baza de date i anume# ,DOConnection se aduce din pa%ina ,DO cu scopul de a realiza conectarea la baza de date. Se execut dublu clic* pe el, $n fereastra )ource o! Connection se actieaz butonul Build care desc1ide fereasra de le%tur spre baza de date. Din fereastra Data Link (roperties pe opiunea (ro%ider se a selecta Microso!t :et ;$< 6LE DB (ro%ider indicndu-se faptul c se dorete desc1iderea unei baze de date creat in &ccess. "e opiunea Connection se a selecta baza de date i se a executa textul de conectare corect. Din pa%ina Data ,ccess se aduce pe form componenta Data&ource and rolul de a realiza le%tura $ntre componenta inizibil -able i componentele izibile de acces spre baza de date+de exemplu DBEdit.% Tot din pa%ina ,DO se aduce pe form componenta ,DO-able cu rolul de a trimite datele, ce se transmit prin intermediul componentei Data&ource: spre componentele izibile de acces la baza de date. /% "entru componenta Data&ource se seteaz proprietatea Data)et pe AD6,ale4. 0% "entru componenta ,DO-able din proprietatea ,able8ame se selecteaz fiierul de lucru executndu-se dublu clic pe s%eata din coloana alorii a acestei proprieti +de exemplu fiierul Clien#i,. "roprietatea ,ableDirect se seteaz pe ,rue: proprietatea Connection pe AD6Connection4 iar proprietatea Acti%e pe ,rue. 1% 6n interiorul cutiei de %rupare se plaseaz perec1i de etic1ete i csue de editare. Etic1etele se aduc din pa%ina &tandard prin Label i se folosesc pentru a se afia texte statice. 2% Csuele de editare se aduc din pa%ina Data Controls prin DBEdit: component de tip linie de editare prin care se poate afia i edita coninutul unui cmp al articolului curent. 7or fi numerotate DBEdit4, DBEdit5 .a.m.d. 3% "entru fiecare Label la proprietatea Caption se a scrie textul ce trebuie afiat +de exemplu Cod Client,. $4% "entru fiecare component DBEdit se a seta proprietatea Data)ource pe Data)ource4: iar prin intermediul proprietii Dataield se a selecta cmpul, din tabel a crui aloare a fi editat, $n respectia csu de editare +ig nr- 3-44 Cuplarea c"su#elor de editare la un anumit c0mp al ba&ei de date=- )orm Desi%ner-ul de izualizare articole prin mac1et# .F ig nr- Cuplarea c"su#elor de editare la un anumit c0mp al ba&ei de date $$% "e form se pot plasa i butoane +de exemplu Butonul ce a fi denumit Exit and rolul de a se reeni la )orm Desi%ner din execuia pro%ramului,. "entru acest buton $n codul pro%ram se scrie# A..0i1ation.Ter-inate; $(% Se saleaz unit-ul +<i0e= &a#e ,s.$ proiectul +<i0e=&a#e 'ro5ect ,s, i se lanseaz $n execuie +!un6!un,. Dup lansarea $n execuie form-ul creat se prezint conform ig nr- > C"utare i %i&uali&are articole prin machet"?- Execuia# ig nr- - C"utare i %i&uali&are articole prin machet" .G ntrebri i rspunsuri 6# Exist o limit a numrului componentelor DataSource, Table i 3uer' pe care le pot aea pe o formH I# Du exist nici o limit, c1iar dac exist nite limite practice pentru numrul de iruri de date cu care poi lucra la un moment dat. 6# Trebuie s folosesc un DBDai%ator pentru a permite utilizatorilor mei s nai%1eze prin baza de dateH I# Du, ai putea pune propriile tale butoane i apoi s scrii cod pentru a muta cursorul bazei de date atunci cnd butonul este apsat. )olosind DBDai%ator este totui mult mai simplu. Chestionar +. Care este cel mai rapid "i mai u"or mod de a crea forme de (aze de date, .. Cum controlai ordinea i numrul coloanelor care apar $ntr-o component DB;ridH :. Care component permite s afiai irul de date $n format tabelH ?. Cum putei adu%a sau $nltura butoane $n DBDai%atorH B. Care ste proprietatea comun a tuturor componentelor de prezen a datelorH C. Ce proprietate este folosit pentru a selecta cmpul de care este le%at o component de dateH E. "utei rearan@a coloanele $ntr-o component DB;ridH Exerciii +. Creai o nou aplicaie care afi"eaz coninutul ta(elului -E)D'#..DB /din (aza de date DBDE0'.1. .. !odificai aplicaia $n pasul / astfel $nct numai cmpurile urmtoare s fie afiate# 7endorDame +distribuitor,, Cit' +ora,, State +stat, i "1one +telefon,. :. Deintorii de Depl1i "rofessional i ClientASerer# creai o form masterAdetaliu din baza de date 0B5=C&5 +instalai 5ocal0nterBase de pe CD-ul Delp1i dac este necesar,. )olosii tabelul E!"5=JEE ca i master i tabelul E!"5=JEEK"I=<ECT ca i detaliu. +Sfat# )olosii cmpul E!"KD= pentru a le%a cele dou tabele,. ?. Creai o form de baze de date care folosete o component DBCtrl;rid pentru a nei%a prin tabel. )olosii orice tabel i includei orice cmp dorii. B. Creai manual o form de baze de date +fr s folosii Database )orm Lizard, folosind orice tabel i incluznd orice cmp dorii. &du%ai o component DBDai%ator pentru a nai%a prin tabel. :M C. 6nlturai toate butoanele din DBDai%ator folosit la pasul B, exceptnd butoanele )irst +primul,, Dext +urmtorul,, "rior +precedentul, i 5ast +ultimul,. :/