Sunteți pe pagina 1din 11

Continuare Curs 3

COMPNENTE VISUALE (DE DATE)


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 DataField. Coninutul cmpului afiat poate fi
modificat. Componenta BDEdit, ca i componenta DBText, nu ofer proprieti, metode i
evenimente specifice bazelor de date, altele dect cele comune tuturor componentelor.

3.2.6 COMPONENTA DBMEMO


Componenta DBMemo este versiunea de date a componentei Memo standard. Se va
folosi aceast component pentru a se afia datele din cmpurile bazei de date care conin
cantiti mari de text. Proprieti ce se vor seta:

Specificarea cmpului se realizeaz prin proprietatea DataField. Coninutul cmpului


afiat poate fi modificat.

Proprietatea AutoDisplay controleaz dac datele din cmpurile irului de date sunt
afiate automat atunci cnd cursorul se mut la o alt nregistrare. Cnd AutoDisplay
este activat True datele sunt afiate automat. Cnd Autodisplay este dezactivat
False utilizatorul trebuie s dea dublu click pe DBMemo pentru a afia datele (sau s
apese Enter).

Pentru a fora memo-ul s afieze coninutul su prin cod, se va folosi o metod nrudit numit
LoadMemo. Aceast metod se va folosi numai atunci cnd AutoDisplay este dezactivat
False.

21

3.2.7 COMPONENTA DBIMAGE


Componenta DBImage este folsit pentru a afia date cu obiecte binare mari (BLOB)
care sunt stocate n format imagine. DBImage nu este neaprat o component care poate fi doar
citit. Se poate schimba o imagine prin afiarea imaginii din clipboard sau folosind proprietatea
Picture pentru a ncrca fiierul de pe disc. Urmtoarea linie de cod va schimba imaginea n
timpul rulrii programului:
DBImage1.Picture.LoadFromFile(peregrine.bmp);
Principalele proprieti DBImage controleaz modul n care imaginea este afiat. Sunt descrise
dup cum urmeaz:

Proprietatea AutoDisplay funcioneaz exact cum a fost descris de componenta


DBMemo.

Metoda LoadPicture poate fi folosit pentru a afia imaginea atunci cnd proprietatea
AutoDisplay este dezactivat False.

Proprietatea Picture permite accesul la imaginea n sine i funcioneaz la fel cum


funcioneaz pentru componenta Image standard.

Proprietatea Center determin ca imaginea s fie centrat n fereastra DBImage.

Proprietatea Stretch determin posibilitatea de micorare a imagini pentru a se potrivi


mrimii curente a ferestrei DBImage sau dac se solicit afiarea la dimensiunea ei
original. Dac Stretch este dezactivat False o parte a imaginii va fi tiat dac
imaginea este prea mare pentru fereastra DBImage.

Proprietatea QuickDraw determin dac se va aplica o palet de culori imaginii atunci


cnd este afiat. Cnd QuickDraw este activat True nu se folosete nici o palet de
culori. Cnd este dezactivat, se folosete o palet pentru a afia imaginea, ceea ce
determin o calitate mai bun, dar o performan puin mai mic la afiarea imaginii.

Metodele componentei DBImage includ CutToClipboard, CopyToClipboard


PasteFromClipboard. Aceste metode fac exact ceea ce spune i numele lor.

3.2.8 COMPONENTA DBLISTBOX


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
DBListBox afieaz coninutul unui cmp specificat din articolul actual al bazei de date, sub
forma unei liste simple. n acest scop se vor seta proprietile DataField i Items.

Specificarea cmpului se realizezaz prin proprietatea DataField. 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.

22

Valorile afiate n list sunt stabilite de proprietatea Items. Aceast proprietate are tipul
TStringList (tabel de iruri de caractere), deci ncrcarea 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 a proprietii
Items. Este important s se realizeze c seriile din list nu vin din baza de date (pentru
aceasta este DBLookUpListBox).

3.2.9 COMPONENTA DBCOMBOBOX


Componenta DBComboBox funcioneaz exact n acelai mod ca i componenta
DBListBox exceptnd diferenele clare ntre o fereastr list i o fereastr combo box. Afieaz
coninutul unui cmp specificat, din articolul actual al bazei de date, sub forma unei liste
combinate.

Specificarea cmpului se realizezaz prin proprietatea DataField. Valoarea actual a


cmpului este indicat prin valoarea afiat n linia de editare a listei combinate. 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 lista 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.

3.2.10 COMPONENTA DBCHECKBOX


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 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 un caracter X. Dac valoarea cmpului este False, butonul de
opiune nu este selecat i interiorul butonului este vid.

3.2.11 COMPONENTA DBRADIOGROUP


Componenta DBRadioGroup funcioneaz asemntor componentelor DBListBox i
DBComboBox. Afieaz coninutul unui cmp specificat din articolul actual al bazei de date,
sub forma unui grup de butoane radio.

Specifiacrea cmpului se realizeaz prin proprietatea DataField. Valoarea actual a


cmpului este indicat prin butonul de radio selectat din grup. Eticheta etaat 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.

23

Grupul de radio conine un numr de butoane radio, ale cror etichete reprezint
valorile posibile ale cmpului desemnate de proprietatea DataField. Etichetele afiate n
grupul de butone radio sunt stabilite de proprietatea Items.

Proprietatea Values pstreaz valoarea curent a cmpului n baza de date. Se va folosi


proprietatea Values pentru a schimba irul afiat n fereastra de grup radio cu un ir
diferit. De exemplu, se poate realiza o fereastr de grup radio cu butoane radio
denumite Luni, Mari i Joi. Oricum, baza de date poate stoca coduri precum L, M i J
n loc de numele complete. Dat fiind acest scenariu, se va putea seta proprietatea Values
(o list de iruri) astfel:
L
M
J
n acest caz, atunci cnd butonul radio este selectat, n cmpul din baza de date va fi
scris codul coninut de litera selectat, n loc s fie afiat irul butonului radio selectat.
Dac proprietatea Values este goal, irul afiat al butonului radio va fi scris n baza de
date atunci cnd este apsat butonul radio.

3.2.12 COMPONENTELE DBLOOKUPLISTBOX I DBLOOKUPCOMBOBOX


Componenta DBLookupListBox permite s se afieze o list de valori de cmpuri dintrun cmp cutat. Spre deosebire de componenta DBLookupComboBox, lista nu este dat de
programator; este dat de un ir separat de date.

Se seteaz proprietile DataSource i DataField n irul de date i cmpul unde va fi


scris selecia de date.

Se seteaz proprietile ListSource i ListField pentru a gsi cmpul din care trebuie
generat lista.

Componenta DBLookupComboBox funcioneaz exact ca DBLookupListBox. n plus,


proprietile DropDownAlign, DropDownRows i DropDownWidth controleaz modul n care se
formeaz listele prin tragere.

3.2.13 COMPONENTA DBRICHEDIT


Componenta DBRichEdit permite s se afieze i editeze cmpuri de tip memo rich text
ntr-un ir de date. Proprietatea AutoDisplay i metoda LoadMemo funcioneaz exact cum
funcioneaz i pentru componenta DBMemo.

3.2.14 COMPONENTA DBCTRLGRID


Componenta DBCtrlGrid permite s se creeze componente tabelare rulabile
particularizate. Se poate plasa orice component de date n prima celul a DBCtrlGrid (sau
orice alt component), i Deplhi va multiplica aceast component pentru fiecare nregistrare
din irul de date.

24

O ilustrare ajut ca aceast explicaie s aib mai mult sens. Figura urmtoare arat o
form care conine o component DBCtrlGrid care a fost alineat astfel nct umple aria de
client a formei. DBCtrlGrid conine o component DBEdit, DBMemo i DBImage. Toate
componentele de date sunt plasate n prima celul a tabelului. A doua celul conine un model
de haurare care spune c nu se poate plasa o component n acea celul. A se vedea exemplul
din Fig nr. 3.1 Crearea unei componente DBCtrlGrid i Fig nr. 3.2 Componenta
DBCtrlGrid n timpul rulrii.

Fig nr. 3.1 Crearea unei componente DBCtrlGrid

Fig nr. 3.2 Componenta DBCtrlGrid n timpul rulrii


DBCtrlGrid are cteva proprieti care merit menionate:

Proprietatea Orientation se va folosi pentru a determina dac trebuie plasat o bar de


deplasare i cum acioneaz componenta dac se apas pe bara de deplasare.

Proprietile PanelWidth i PanelHeight se folosesc pentru a stabili limea i nlimea


celulelor din tabel.

Proprietatea RowCount determin cte nregistrri de afieaz odat.

Componenta DBCtrlGrid are un eveniment, OnPaintPanel. Acest eveniment este


acionat de fiecare dat cnd o celul a tabelului trebuie pictat. Se poate rspunde la acest
eveniment, pentru a desena pe fundalul panelului. Desenarea se realizeaz numai pentru
fundalul panelului, restul de pe tabel vor fi pictate automat.

3.2.15 ALTE COMPONENTE DE DATE


DBChart este o component de grafice inclus n versiunile Professional i
Client/Server ale Delphi. Aceast component nu este doar puternic, ci i complex.

25

Versiunea Client/Server a Delphi include Decision Cube, care conine nc 6


componente. Aceste componente permit s se fac o analiz de date complex cum ar fi
tabularea ncruciat, tabele i grafice pivot i agregarea datelor.
Tabelul urmtor centralizeaz componentele vizuale cele mai 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:
Tabelul nr 3.1 Componente visuale ce trebuie iniializate
Component
DBGrid
DBNavigator
DBText
DBEdit
DBMemo
DBImage
DBCheckBox
DBListBox
DBComboBox
DBRadioGroup

Proprieti care trebuie s fie iniializate


DataSource
DataSource
DataSource
DataSource
DataSource
DataSource
DataSource
DataSource
DataSource
DataSource

DataField
DataField
DataField
DataField
DataField
DataField
DataField
DataField

Items
Items
Items

COMPONENTA GROUPBOX
Componenta GroupBox (cutie degrupare de tip TGroupBox) ete un container.
Componentele plasate n interiorul ein vor aparine aceluiai grup. Datorit acestei caracteristici
ele vor putea fi deplksate simultan. ntre componenta GroupBox i componentele plasate n
interiorul ei se creaz o relaie de tip prite copil. Aceast component va fi folosit pentru
gruparea logic a diferitelor componente. Se gsete n patgina standard a paletei de
componente i are simbolul grafic
. Nu are proprieti i metode specifice.
Proprietatea Align va fi ntlnit la toate componentele de tip grup. Aceast propreitate
controleaz modul cum componenta este selectat relativ la printele su. Valorile
posibile pentru aceast proprietate i o descriere a fiecreia este dat n tabelul de mai
jos:
Valoare
alBottom
alClient

alLeft
alNone

Descriere
Aceast proprietate face alinierea n partea de jos a ferestrei printe.
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
RichEdit .
Componenta imagine a fost plasat
la stnga, iar componenta
GroupBox a ocupat restul formei,
dei s-a folosit opiunea alClientpagin plin.

Componenta este aliniat la marginea din stnga a ferestrei printe.


O bar de unelte vertical este un exemplu n acest sens.
Componenta este plasat fr a avea vreo relaie special cu
fereasta printele. Aceasta opiune este implicit pentru majoritatea
26

componentelor.
Componeta este aliniat la marginea dreapt a ferestrei printe.
Componenta este aliniat la partea de sus a ferestrei printe.

alRight
alTop

Proprietatea Caption va fi folosit pentru a schimba numele grupului.

Vizualizarea articolelor din baza de date prin machet


O alt variant de a vizualiza articolele dintr-un tabel al bazei de date o constituie
aducerea acestora, cmp de cmp, n csue de editare. n acest scop se vor construi machete,
alctuite din grupuri de etichete i csue de editare, pentru toate cmpurile care se doresc a fi
vizualizate. Pentru ca forma s fie mai atractiv, se va realiza macheta de cutare ntr-un
GroupBox (cutie de grupare). Componenta GroupBox permite ataarea pe ea a altor componente
visuale sau non-visuale.
Cutarea n fiier se va realiza prin bara de navigare. Pentru a simula un meniu de
cutare, n baza de date, bara de navigare se va fixa pe o component de tip container i anume
componenta Panel poziionat n extremitatea de sus o form-ului.
De exemplu, consultarea fiierului Clienti, cu structura prezentat n Fig nr. Structura
fiierului Clienti i vizualizarea articolelor, prin intermediul unei machete, presupune
parcurgerea mai multor etape de lucru dup cum urmeaz.

Fig nr. Structura fiierului Clienti


Etape de lucru:
1. Din pagina Standard a paletei de componente se selecteaz componenta Panel. Printr-un
click de mouse se fixeaz pe form. Se creaz o component de tip container care se va folosi
pentru a se crea pe ea bara de navigare. La proprietatea Caption se va terge numele implicit
care a fost Panel1. Proprietatea Align se seteaz pe alTop. n urma acestei opetaii
componenta va ocupa partea superioar a formei.
2. Din pagina Standard a paletei de componente se selecteaz componenta GroupBox (cutie
de grupare) i se depune pe form, s-a creat astfel o cutie de grupare n care pot fi depuse alte
componente. Pentru a i se atribui nume grupului se selecteaz proprietatea Caption i se va
scrie numele acestuia (de exemplu Clienti). n colul din stnga sus va apare scris numele
gripului. Se va selecta proprietatea Align i se va seta pe alClient, cutia de grupare va ocupa
ntreaga suprafa a formei, ramas dup plasarea panoului.
3. Din pagina DataControls se va selecta componenta DBNavigator i de depune pe
componenta Panel de pe form. Se creaz n felul acesta un panou format din mai multe
butoane de comand prin intermediul crora se poate naviga printre articolele bazei de date.
Panoul 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. Pentru a fi

27

activ, bara de navigare se cupleaz la sursa de date, setndu-i proprietatea DataSource pe


DataSource1 (ulterior dup ce s-a inserat DataSource pe Form).
4. Se vor duce pe form cele trei componente nono-visuale necesare conectrii la baza de date
i anume:
ADOConnection se aduce din pagina ADO cu scopul de a realiza conectarea la baza de
date. Se execut dublu click pe el, n fereastra Source of Connection se activeaz
butonul Build care deschide fereasra de legtur spre baza de date. Din fereastra Data
Link Properties pe opiunea Provider se va selecta Microsoft Jet 4,0 OLE DB Provider
indicndu-se faptul c se dorete deschiderea unei baze de date creat in Access. Pe
opiunea Connection se va selecta baza de date i se va executa textul de conectare
corect.
Din pagina Data Access se aduce pe form componenta DataSource avnd rolul de a
realiza legtura ntre componenta invizibil Table i componentele vizibile de acces
spre baza de date(de exemplu DBEdit).
Tot din pagina ADO se aduce pe form componenta ADOTable cu rolul de a trimite
datele, ce se transmit prin intermediul componentei DataSource, spre componentele
vizibile de acces la baza de date.
5. Pentru componenta DataSource se seteaz proprietatea DataSet pe ADOTale1.
6. Pentru componenta ADOTable din proprietatea TableName se selecteaz fiierul de lucru
executndu-se dublu clic pe sgeata din coloana valorii a acestei proprieti (de exemplu
fiierul Clieni). Proprietatea TableDirect se seteaz pe True, proprietatea Connection pe
ADOConnection1 iar proprietatea Active pe True.
7. n interiorul cutiei de grupare se plaseaz perechi de etichete i csue de editare. Etichetele
se aduc din pagina Standard prin Label i se folosesc pentru a se afia texte statice.
8. Csuele de editare se aduc din pagina Data Controls prin DBEdit, component de tip linie
de editare prin care se poate afia i edita coninutul unui cmp al articolului curent. Vor fi
numerotate DBEdit1, DBEdit2 .a.m.d.
9. Pentru fiecare Label la proprietatea Caption se va scrie textul ce trebuie afiat (de exemplu
Cod Client).
10. Pentru fiecare component DBEdit se va seta proprietatea DataSource pe DataSource1, iar
prin intermediul proprietii DataField se va selecta cmpul, din tabel a crui valoare va fi
editat, n respectiva csu de editare (Fig nr. 3.11 Cuplarea csuelor de editare la un
anumit cmp al bazei de date).
Form Designer-ul de vizualizare articole prin machet:

28

Fig nr. Cuplarea csuelor de editare la un anumit cmp al bazei de date


11. Pe form se pot plasa i butoane (de exemplu Butonul ce va fi denumit Exit avnd rolul de a
se reveni la Form Designer din execuia programului). Pentru acest buton n codul program
se scrie:
Application.Terminate;
12. Se salveaz unit-ul (File\ Save As), proiectul (File\Save Project As) i se lanseaz n
execuie (Run\Run). Dup lansarea n execuie form-ul creat se prezint conform Fig nr.
Cutare i vizualizare articole prin machet.
Execuia:

Fig nr. . Cutare i vizualizare articole prin machet

29

ntrebri i rspunsuri
: Exist o limit a numrului componentelor DataSource, Table i Query pe care le pot avea pe
o form?
R: Nu exist nici o limit, chiar dac exist nite limite practice pentru numrul de iruri de date
cu care poi lucra la un moment dat.
: Trebuie s folosesc un DBNavigator pentru a permite utilizatorilor mei s navigheze prin baza
de date?
R: Nu, ai putea pune propriile tale butoane i apoi s scrii cod pentru a muta cursorul bazei de
date atunci cnd butonul este apsat. Folosind DBNavigator este totui mult mai simplu.

Chestionar
1. Care este cel mai rapid i mai uor mod de a crea forme de baze de date?
2. Cum controlai ordinea i numrul coloanelor care apar ntr-o component DBGrid?
3. Care component v permite s afiai irul de date n format tabel?
4. Cum putei aduga sau nltura butoane n DBNavigator?
5. Care ste proprietatea comun a tuturor componentelor de prezen a datelor?
6. Ce proprietate este folosit pentru a selecta cmpul de care este legat o component de
date?
7. Putei rearanja coloanele ntr-o component DBGrid?

Exerciii
1. Creai o nou aplicaie care afieaz coninutul tabelului VENDORS.DB (din
baza de date DBDEMOS).
2. Modificai aplicaia n pasul 1 astfel nct numai cmpurile urmtoare s fie afiate:
VendorName (distribuitor), City (ora), State (stat) i Phone (telefon).
3. Deintorii de Deplhi Professional i Client/Server: creai o form master/detaliu din
baza de date IBLOCAL (instalai LocalInterBase de pe CD-ul Delphi dac este
necesar). Folosii tabelul EMPLOYEE ca i master i tabelul EMPLOYEE_PROJECT
ca i detaliu. (Sfat: Folosii cmpul EMP_NO pentru a lega cele dou tabele).
4. Creai o form de baze de date care folosete o component DBCtrlGrid pentru a neviga
prin tabel. Folosii orice tabel i includei orice cmp dorii.
5. Creai manual o form de baze de date (fr s folosii Database Form Wizard) folosind
orice tabel i incluznd orice cmp dorii. Adugai o component DBNavigator pentru
a naviga prin tabel.

30

6. nlturai toate butoanele din DBNavigator folosit la pasul 5, exceptnd butoanele First
(primul), Next (urmtorul), Prior (precedentul) i Last (ultimul).

31

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