Titlul documentului


parte dintre datele afisate,sau daca doriti sa arhivati modificarile efec-



Yüklə 1,42 Mb.
səhifə11/16
tarix03.01.2019
ölçüsü1,42 Mb.
#89992
1   ...   8   9   10   11   12   13   14   15   16
parte dintre datele afisate,sau daca doriti sa arhivati modificarile efec-

tuate,adaugati un camp TMemo si un buton cu urmatoarea procedura OnClick:

Memo1.Lines.Add(DBEdit1.Text);

Memo1.Lines.Add(DBEdit2.Text);

Memo1.Lines.Add(DBEdit3.Text);

Memo1.Lines.Add(' *** ');

Pentru a arhiva datele,adaugati Fila1.htm in Prj71,si un buton cu urma-

toarea procedura OnClick:

procedure TForm1.Button2Click(Sender: TObject);

var F1:TextFile;

begin

AssignFile(F1,'Fila1.htm');

Rewrite(F1);

Write(F1,Memo1.Lines.Text);

CloseFile(F1);

end;

-83- DataControls - TDBMemo

TDBMemo este un obiect conceput pentru a putea afisa obiecte mari codi-

ficate binar (BLOB=binary large objects).Se utilizeaza pentru a prezenta

campurile de date de tip Memo,preluate din baze de date.Este similar cu

TMemo,dar utilizeaza un obiect DataSource pentru a prelua datele din

baza de date.Se utilizeaza pentru date de tip text,structurate pe mai

multe randuri.TDBMemo permite editarea datelor in timp real.Pentru a

impiedeca editarea datelor se poate seta proprietatea ReadOnly la valoarea

True.Pentru a adauga bare de scroll,se poate apela proprietatea ScrollBars

Dintre proprietati se remaca CopyToClipboard,CutToClipboard si Paste-

FromClipboard care permit copierea datelor in memoria Clipboard si res-

pectiv copierea datelor din memoria Clipboard la o adresa oarecare.

Pentru a copia datele afisate,se poate utiliza si indicatorul mouse.

Pur si simplu,tastati butonul drept si selecatati SelectAll,apoi alegeti

Copy,deschideti fila in care doriti sa copiati datele,apasati din nou

butonul drept si alegeti Paste.Pentru a copia doar o parte din date,

selectati datele dorite(cu butonul mouse stang apasat) si apoi apasati

butonul drept si alegeti Copy...apoi Paste.Practic,datele se pot copia

ca dintr-o fereastra Windows oarecare.

Daca nu doriti ca datele preluate sa fie afisate permanent,setati

proprietatea AutoDisplay la valoarea False.In acest caz,pentru a afisa

datele se va executa in timpul executiei un dublu click pe DBMemo.

De obiecei,TMemo se utilizeaza in combinatie cu TDBGrid,TDBImage si

cu un obiect de navigare TDBNavigator (pentru a afisa toate datele).

EXEMPLU: (vezi si Prj72)

Salvati o fila noua si proiectul in Prj72.Adaugati un obiect TDataSource,

un obiect TTable,un obiect TDBGrid,un obiect TDBMemo,un obiect TDBImage si

un obiect TDBNavogator.

Setati Table1 la: DataBaseName=DBDEMOS,TableName=VENUES.DB,Active=True.

Setati DataSource1 la: DataSet=Table1.

Setati DBNavigator1 la: DataSource=DataSource1.

Setati DBGrid1 la: DataSource=DataSource1.

Setati DBImage1 la: DataSource=DataSource1 si DataField=Venue_Map.

Setati DBMemo1 la DataSource=DataSource1 si DataField=Remarks.

Puteti utiliza Color si Font pentru a alege combinatia preferata de

culori si dimensiunea fonturilor.

Tastati F9 si executati aplicatia.

Daca doriti sa copiati date,in timpul executiei,selectati datele

dorite(trageti cu butounul mouse apasat deasupra datelor),apoi utilizati

metoda Copy/Paste (cu butonul drept).

Daca doriti ca datele parcurse sa fie arhivate automat,alegeti eveni-

mentul dorit (OnEnter,OnClick,OnExit...etc) si scrieti o procedura in

care apelati metodele CopyToClipboard si PasteFromClipboard.

Daca proprietatea ReadOnly este setata False,puteti utiliza campul

TDBMemo pentru a modifica textul dupa bunul plac.Modificarile vor actua-

liza automat baza de date (raman definitive).

Modificarile se pot efectua si automat.De exemplu,se poate edita o

procedura pentru evenimentul OnEnter,care actualizeaza datele cu valori

preluate de la un server din retea.Pentru a verifica daca s-au efectuat

modificari automate,se poate utiliza proprietatea Modified.

Pentru a semnaliza cu mesaje de tip Windows,puteti utiliza metoda WndProc.

In sinteza,TDBMemo este ideal pentru manipularea textelor mai ample.


-84- DataControls - TDBImage

TDBImage este un obiect specializat pentru a afisa imagini grafice de

tip Bitmap,preluate din baze de date care contin campuri de tip BLOB

(BLOB=binary large objects).Pentru preluarea datelor utilizeaza tot un

obiect de tip DataSource.Datele pot fi copiate in memoria clipboard sau

pot fi preluate din memoria clipboard,sau pot fi preluate din file izo-

late si incluse in baza de date (actualizeaza campurile BLOB).

Proprietatile AutoDisplay si ReadOnly sunt la fel ca pentru TDBText.

DataSource si DataField se utilizeaza pentru a prelua datele iar Picture

pentru a opera cu imaginea afisata.

Dintre metode,se disting CopyToClipboard si PasteFromClipboard,care

pot fi utilizate fie pentru a relua o imagine de mai multe ori,fie pentru

a edita activ (a actualiza) campurile de date din tabel.Atentie insa sa

nu pierdeti definitiv datele importante (datele preluate cu PasteFromClip-

board se vor scrie direct in baza de date).Faceti copii de siguranta.

EXEMPLU: (vezi si Prj73)

Faceti o copie de siguranta a tabelului ANIMALS.DBF si .DBT din Demos/Data.

Utilizati Tools si ImageEditor pentru a edita o imagine BitMap de 200/200

si salvati fila respectiva in Prj73 cu numele: BitMap1.bmp.

Salvati o fila noua si proiectul in Prj73.Adaugati un obiect TDataSource,

un obiect TTable un obiect TDBNavigator si un obiect TDBImage.

Setati TTable la: DatabaseName=DBDEMOS,TableName=ANIMALS.DBF,Active=True.

Setati DataSource1 la: DataSet=Table1.

Setati DBNavigator1 la: DataSource=DataSource1.

Setati DBImage1 la: DataSource=DataSource1 si DataField=BMP.

Tastati F9 si executati aplicatia.

Daca doriti sa afisati si desenul realizat de d-voastra,adaugati un buton

si urmatoarea procedura OnClick:

procedure TForm1.Button1Click(Sender: TObject);

begin

DBImage1.CopyToClipboard;

DBImage1.Picture.Bitmap.LoadFromFile('BitMap1.bmp');

DBImage1.Repaint;

end;

Observati ca imaginea initiala a fost copiata in memoria clipboard.Pentru

a relua imaginea initiala din memoria clipboard,adaugati inca un buton si

urmatoarea procedura OnClick:

procedure TForm1.Button2Click(Sender: TObject);

begin

DBImage1.PasteFromClipboard;

DBImage1.Repaint;

end;

Intr-o aplicatie reala,este bine sa adaugati si o procedura prin care sa

eliberati memoria clipboard.

In mod similar,puteti proiecta o aplicatie cu ajutorul careia sa puteti

alege imagini din mai multe baze de date si sa le organizati intr-o alta

baza de date.Pentru acest scop,formati module pentru fiecare baza de date.

Fiecare modul va contine: un obiect TDataSource,un obiect TTable,un obiect

TDBNavigator si un obiect TDBImage.Navigati prin tabele si cand selectati

o imagine,copiati datele in memmoria clipboard,apoi descarcati datele din

memoria clipboard in tabelul dorit,la pozitia dorita.

Puteti forma astfel albume de fotografii digitale,benzi desenate etc.


-85- DataControls - TDBListBox

TDBListBox este un obiect de tip lista de elemente,conceput pentru a

putea actualiza cat mai usor o baza de date.Obiectul TDBListBox este in

conexiune cu o baza de date,prin intermediul unui obiect de tip DataSource

si poate fi utilizat pentru editarea campurilor,selectate prin proprieta-

tea DataField.Selectarea uni element din lista inclusa in proprietatea

Items,din TDBListBox,va determina actualizarea automata a campului curent

din DataSource (specificat prin proprietatea DataField).

Practic,utilizatorul se va deplasa in baza de date pana la elementul

care urmeaza sa fie schimbat si apoi va alege din lista elementul care va

actualiza baza de date.Cu un simplu click de mouse,elementul din lista

va inlocui elementul din baza de date:

EXEMPLU: (vezi si Prj74)

Faceti o copie a tabelului Venues.DB din Demos/Data si redenumiti tabelul

FR2.DBF (pentru a putea reutiliza datele initiale).Salvati copia,tot in

directorul Data din Demos,impreuna cu celelalte tabele.

Salvati o fila noua si proiectul in Prj74.Adaugati un obiect TDataSource,

un obiect TTable,un obiect TDBGrid si un obiect TDBListBox.

Setati Table1 la: DatabaseName=DBDEMOS,TableName=FR2.DBF si Active=True.

Setati DataSource1 la: DataSet=Table1.

Setati DBGrid1 la: DataSource=DataSource1.

Selectati DBListBox1 si setati: DataSource=DataSource1 si DataField=VENUE.

Apoi executati un dublu click pe Items si adaugati in lista cateva ele-

mente: Muzeul de Arta,Teatrul comic,Opera etc...Confirmati cu OK.

Tastati F9 si executati aplicatia.

Pentru a modifica una dintre inregistrari,alegeti din obiectul DBListBox1

unul dintre elemente (De exemplu : Opera) apoi executati un click de

mouse in unul dintre campurile VENUE din obiectul DBGrid1.Observati ca

valoarea campului respectiv se actualizeaza automat cu valoarea selectata

din DBListBox.Pentru ca modificarea sa ramana definitiva,executati un

click de mouse pe orice alt camp din DBGrid,sau executati o operatie

oarecare.Ideal este sa utilizati un buton care sa confirme modificarea.

Pentru a naviga mai usor in baza de date,puteti adauga si un DBNavigator.

Atentie,modificarile efectuate sunt ireversibile.Faceti o copie se sigu-

ranta sau verificati cu atentie datele inainte de a le actualiza.

Modificarile se pot observa atunci cand redeschideti baza de date.

Obiectul detine si o serie intrega de proprietati auxiliare,utile pentru

a modifica aspectul,culorile,fonturile,numarul de elemente din lista etc.

Dintre metode,Clear sterge toate elementele din lista,ItemAtPos identifica

un anumit element din lista in functie de coordonatele sale axiale,Hide

ascunde lista iar Show o reafiseaza,GetTextBuf copiaza textul selectat

intr-un tampon de memorie,etc...

Lista de evenimente este destul de ampla,astfel incat se pot programa un

numar foarte mare de proceduri automate.Exemplu: utilizand evenimentul

OnEnter,se poate scrie o procedura de actualizare automata,in care toate

elementele dintr-o coloana vor primi valoarea specificata in DBListBox.

Pentru a modifica inaltimea fiecarui element din lista (astfel incat sa

puteti utiliza fonturi mai mari) se va seta proprietatea Style la valoarea

lbOwnerDrawFixed,apoi se va seta proprietatea ItemHeight la valoarea

dorita (Exemplu: 20).In final,alegeti Font si setati valorile dorite:

de exemplu: Size=12 si Color= Red.Puteti personaliza aspectul interfetei,

atfel incat sa accentuati elementele active,sau semnificative.


-86- DataControls - TDBComboBox

TDBComboBox este aproape identic cu TDBListBox,cu deosebirea ca are

inclus si un obiect de tip TEdit.Ca rezultat,utilizatorul poate alege un

element,dintre cele arhivate in Items,sau poate edita in timp real un

sir de caractere pentru a actualiza o inregistrare din baza de date.

Conectarea la baza de date se face tot prin DataSource iar proprietatile

metodele si evenimentele sunt identice cu cele ale obiectului TDBListBox.

EXEMPLU: (vezi Prj75)

Salvati o fila si proiectul in Prj75.Adaugati un obiect TDataSource,un

obiect TTable,un obiect TDBGrid si un obiect TDBComboBox.

Setati proprietatile obiectelor,la fel ca si in exercitiul precedent(vezi

si Prj74).

In DBComboBox1,utilizati Items pentru a introduce lista de elemente cu

care doriti sa actualizati baza de date.

Tastati F9 si executati aplicatia.Spre deosebire de DBListBox,puteti

edita in timpul executiei un text oarecare,apoi executati un click de

mouse in tabelul din DBGrid,pentru a actualiza inregistrarea respectiva.

Pentru TDBComboBox,proprietatea Style are o serie de particularitati.

Style permite urmatoarele setari:

csDropDown -setarea implicita -contine lista Items si o caseta de editare

csSimple - afiseaza doar caseta de editare (fara lista Items)

csDropDownList -afiseaza lista si caseta de editare,dar utilizatorul nu

poate utiliza decat datele din lista Items

csOwnerDrawFixed -permite ca lista sa contina si elemente care nu sunt

siruri de caractere (de exemplu arii Bitmap)

csOwnerDrawVariable -idem csOwnerDrawFixed

Proprietatea Sorted se poate utiliza pentru a ordona alfabetic datele

din lista Items.
TDBCheckBox este un obiect destinat pentru a compara valoarea unei

inregistrari cu o valoare fixa.Daca valoarea corespunde cu cea comparata,

caseta va fi bifata,iar in caz contrar,caseta va fi inactivata.Este util

mai ales in cazul coloanelor care contin date de tip boolean,unde valoarea

inregistrarii poate fi True sau False,dar poate fi utilizat pentru orice

tip de inregistrare.Pentru comparatie se utilizeaza cele doua proprietati

ValueChecked si ValueUnchecked.Daca valoarea inregistrarii corespunde cu

valoarea ValueChecked,caseta va fi bifata(activa) iar daca valoarea inre-

gistrarii corespunde cu cea din ValueUnchecked caseta va fi inactiva.

Implicit,cele doua proprietati au valoarea True si False,dar pot fi setate

la orice valoare de tip string.

EXEMPLU: (vezi si Prj76)

Salvati o fila noua si proiectul in Prj76.Adaugati un obiect TDataSource,

un obiect TQuery,un obiect TDBGrid,un obiect TDBNavigator si 3 obiecte

TDBCheckBox.

Selectati Query1 si setati DatabaseName=DBDEMOS,apoi introduceti in SQL

urmatoarea comanda: SELECT Addr1,Company FROM CUSTOMER.DB

Setati DataSource1 la: DataSet=Query1.

Setati DBGrid1 la: DataSource=DataSource1.

Setati DBNavigator la: DataSource=DataSource1.

Setati DBCheckBox1 la: DataSource=DataSource1 si DataField=Company, si

ValueChecked=Unisco.

Eventual schimbati culoarea si fontul cu Color si Font.


-87- DataControls - TDBRadioGroup

Setati DBCheckBox la: DataSource=DataSource1,DataField=Company si

ValueCheched=Sight Diver.

Setati DBCheckBox la: DataSource=DataSource1,DataField=Company si

ValueChecked=Ocean Paradise.

Tastati F9 si executati aplicatia.Navigati prin baza de date si observati

ca in momentul in care numele companiei din inregistrarea curenta cores-

punde cu cel specificat in ValueChecked,caseta de validare respectiva va

fi activata si bifata.

Pentru ca obiectul sa fie si mai bine exploatat,puteti adauga si o

procedura oarecare,declansata de valoarea True pentru proprietatea

Checked (mostenita de la TCustomCheckBox).

De exemplu,pentru a semnaliza cu un beep sonor inregistrarile care

valideaza una dintre casetele de validare,alegeti pentru DBNavigator

evenimentul OnClick si adaugati urmatoarea procedura:

procedure TForm1.DBNavigator1Click(Sender: TObject; Button:TNavigateBtn);

begin

if DBCheckBox1.Checked=True then

beep();

if DBCheckBox2.Checked=True then

beep();

if DBCheckBox3.Checked=True then

beep();

end;

In mod similar,se poate edita o procedura care sa arhiveze automat doar

inregistrarile care valideaza una dintre casetele de validare.

Metodele si evenimentele obiectului TDBCheckBox sunt mostenite de la

ancestori (TWinControl) si nu prezinta particularitati semnificative.
TDBRadioGroup este un obiect care grupeaza mai multe butoane de tip

radio,pentru a permite actualizarea rapida a unei baze de date.Fiecare

buton radio are setata o anumita valoare constanta.TDBRadioGroup este in

conexiune permanenta cu o baza de date,prin intermediul unui obiect de tip

TDataSource.In momentul in care unul dintre butoane este setat Checked,

valoarea acestui buton va actualiza automat inregistrarea curenta din

baza de date.Reciproc,atunci cand valoarea din inregistrarea curenta este

identica cu valoarea butonului,butonul va fi afisat Checked(selectat).

Pentru a introduce butoanele radio se utilizeaza proprietatea Items iar

pentru a introduce valoarea atribuita fiecarui buton se utilizeaza pro-

prietatea Values.Pentru ca butoanele sa fie afisate intr-o singura coloana

sau in mai multe coloane se va utiliza proprietatea Columns.

Butoanele grupate in obiect sunt interconectate,astfel incat atunci

cand unul dintre butoane este selectat,restul butoanelor vor fi deselecta-

te automat.Pentru a respecta aceasta caracteristica a obiectului nu atri-

buiti aceeasi valoare pentru doua sau mai multe butoane.Fiecare buton

trebuie sa aiba o valoare distincta.

Acest gen de obiect este foarte util,mai ales atunci cand exista un

numar limitat de variante,pentru datele ce urmeaza sa fie introduse

intr-un tabel,sau atunci cand se utilizeaza pentru actualizarea datelor

doar doua sau mai multe valori constante (Exemplu: se actualizeaza data

calendaristica limita,pentru o anumita inregistrare din tabel).Se poate

realiza un modul separat,destinat special pentru actualizarea datelor.


-88- DataControls - TDBLookupListBox

De exemplu,presupunand ca doriti sa puteti modifica usor data de desfa-

surare a unei competitii sportive (in functie de conditiile meteo),puteti

proiecta un exercitiu de genul:

EXEMPLU: (vezi si Prj77)

Salvati o fila noua si proiectul in Prj77.Adaugati un obiect TDBRadioGroup

un obiect TDBGrid,un obiect TDBNavigator,un obiect TDataSource si un

obiect TTable.

Setati Table1 la: DatabaseName=DBDEMOS,TableName=EVENTS.DB si Active=True

Setati DataSource1 la: DataSet=Table1.

Setati DBNavigator la: DataSource=DataSource1.

Setati DBGrid1 la: DataSource=DataSource1.

Setati DBRadioGroup la : DataSource=DataSource1 si DataField=Event_Date,

Columns=4 (pentru a grupa butoanele orizontal) apoi alegeti Items si in

String list editor intorduceti pe randuri separate valorile dorite:

6/17/96,6/18/96,6/19/96,6/21/96.Valorile astfel introduse vor forma de-

numirea butoanelor.Daca doriti,puteti utiliza si numele zilei respective

gen: joi,vineri,sambata si luni.Pentru a atribui valoarea dorita fiecarui

buton,alegeti Values si introduceti in String list editor valorile dorite:

6/17/96,6/18/96,6/19/96,6/21/96 (pe randuri separate).Confirmati cu OK.

Tastati F9 si executati aplicatia.Observati ca daca va deplasati cu

butoanele de navigare,in momentul in care data evenimentului corespunde cu

valoarea butonului,butonul respectiv va fi selectat.

Pentru a schimba data unui eveniment,deplasati cursorul pana la eveni-

mentul respectiv si apoi selectati butonul cu data dorita.Modificarea va

fi observabila doar dupa ce deplasati cursorul la inregistrarea urmatoare.
TDBLookupListBox este un obiect asemanator cu TDBListBox,dar pentru

popularea listei de optinui utilizeaza un obiect DataSource secundar cu

care preia datele dintr-o baza de date.Astfel,TDBLookupListBox este in

conexiune cu doua baze de date: una in care scrie datele si una din care

preia valorile din lista de optiuni.Pentru popularea listei de optiuni se

utilizeaza proprietatile ListSource,KeyField si ListField.In rest,proprie-

tatile,metodele si evenimentele sunt identice cu cele ale obiectului TDB-

ListBox.Se utilizeaza pentru a actualiza o baza de date cu ajutorul unei

alte baze de date.

EXEMPLU: (vezi Prj78)

Se va utiliza copia de siguranta a tabelului Venues.db (FR2.DBF).

Salvati o fila noua si proiectul in Prj78.Adaugati 2 obiecte TDataSource,

2 obiecte TTable,un obiect TDBGrid si un obiect TDBLookupListBox.

Setati Table1 la: DataBaseName=DBDEMOS,TableName=FR2.DBF,Active=True.

Setati DataSource1 la: DataSet=Table1.

Setati DBGrid1 la: DataSource=DataSource1.

Setati Table2 la: DatabaseName=DBDEMOS,TableName=VENUES.DB,Active=True.

Setati DataSource2 la: DataSet=Table2.

Setati BDLookupListBox la: DataField=Venue,DataSource=DataSource1,

KeyField=Venue,ListSource=DataSource2.

Tastati F9 si executati aplicatia.In DbLookupListBox se vor afisa valorile

din coloana Venue din baza de date VENUES.DB.

Alegeti valoarea din Venues.db care corespunde cu restul inregistrarii

si executati un click de mouse.Repetati operatia,pana cand datele din

FR2.DBF(modificate anterior) corespund cu cele din VENUES.DB.


-89- TDBLookupComboBox si TDBRichEdit

TDBLookupComboBox este asemanator cu TDBLookupListBox,dar utilizeaza

un obiect ComboBox pentru afisarea listei de optiuni.Ca rezultat,ocupa

mai putin loc intr-o interfata grafica si este preferat atunci cand uti-

lizati mai multe astfel de obiecte (cate unul pentru fiecare coloana),

pentru a actualiza o baza de date.Se pot utiliza mai multe obiecte de

acest gen si pentru a actualiza o baza de date cu date preluate din mai

multe tabele.Fiecare obiect TDBLookupComboBox va face conexiunea intre

cele doua baze de date.Se utilizeaza la fel ca si TDBLookupListBox.

Exemplu: (vezi Prj79)

Exemplul este identic cu Prj78,dar se apeleaza la un obiect de tip TDB-

LookupComboBox in loc de TDBLookupListBox.Incercati sa editati un exer-

citiu in care sa utilizati doua sau mai multe astfel de obiecte,pentru

a actualiza o baza de date cu informatii preluate din 3-4 tabele.
TDBRichEdit este un obiect asemanator cu TDBMemo si este destinat

pentru a afisa date de tip caracter,in format mare,cu mai multe randuri

si cu un anumit format al paginei (spatii goale,paragrafe etc.).Se

utilizeaza impreuna cu baze de date care contin campuri de tip BLOB,

(BLOB=Binary large objects).Spre deosebire de TDBMemo,datele afisate vor

respecta formatul initial al textului si atunci cand exista spatii goale,

paragrafe,spatii tab,minitabele etc.

Proprietatile ReadOnly,WantTabs,AutoDisplay etc. sunt la fel ca pentru

TDBMemo.Obiectul nu prezinta alte particularitati semnificative.Metodele

mostenite da la ancestorul TCustomRichEdit permit operatii asupra textului

(Clear,FindText.GetSelTextBuf) sau permit imprimarea textului (Print).

EXEMPLU: (vezi si Prj80)

Salvati o fila noua si proiectul in Prj80.Adaugati un obiect TDataSource,

un obiect TTable,un obiect TDBRichEdit si un obiect TDBImage.

Setati Table1 la: DatabaseName=DBDEMOS,TableName=BIOLIFE.DB,Active=True.

Setati DataSource1 la: DataSet=Table1.

Setati DBRichEdit1 la: DataSource=DataSource1 si DataField=Notes.

Setati DBImage1 la: DataSource=DataSource1 si DataField=Graphic.

Pentru a putea naviga in baza de date,adaugati si un obiect DBNavigator

si setati proprietatea DataSource la valoarea DataSource1.

Redimensionati obiectele astfel incat sa asigure o vizibilitate completa

a datelor prezentate.Eventual inactivati butoanele inutile din obiectul

DBNavigator.Obiectele nonvizuale (DataSource1 si Table1 se pot suprapune

peste cele vizuale).Tastati F9 si executati aplicatia.

Daca doriti sa adaugati si o procedura de cautare a unui anumit fragment

de text,adaugati un obiect TEdit,un buton si urmatoarea procedura OnClick:

procedure TForm1.Button1Click(Sender: TObject);

var tip1:TSearchTypes;

rezultat:variant;

begin

rezultat:=DBRichEdit1.FindText(Edit1.Text,0,2000,tip1);

Edit1.Text:=rezultat;

end;

Introduceti un text oarecare in Edit1 si apasati butonul.Daca textul se

regaseste in obiectul DBRichEdit,Edit1 va afisa pozitia la care incepe

textul cautat,iar in caz contrar va afisa -1.

Puteti utiliza TDBRichEdit pentru a edita bazele de date,in timp real.


-90- DataControls - TDBCtrlGrid

TDBCtrlGrid este un obiect specializat pentru a putea afisa simultan

mai multe celule ale unui tabel.Pentru afisarea fiecarui camp de date se

utilizeaza cate un control separat de tip TDBText,TDBEdit,TDBMemo sau

TDBImage,iar TDBCtrlGrid asigura o interfata comuna,asemanator cu obiectul

standard TPanel.Pentru preluarea datelor din baza de date,se utilizeaza

tot un obiect de tip TDataSource.

Obiectul realizeaza o interfata complexa in care datele pot fi afisate,

sau pot fi editate,pot fi sortate sau pot fi comparate si corelate,in

functie de necesitatile de moment.

Formatul de afisare a datelor ales pentru prima inregistrare va fi

utilizat pentru toate inregistrarile din baza de date.In faza de design,

plasati obiectele necesare si stabiliti legaturile necesare doar pentru

prima inregistrare din tabel.TDBCtrlGrid va repeta sablonul pentru toate

celelalte inregistrari si va prezenta datele sub forma de tabel,in care

fiecare rand este format din mai multe obiecte de prezentare a datelor.

EXEMPLU: (vezi si Prj81);

Salvati o fila noua si proiectul in Prj81.Adaugati un obiect TDBCtrlGrid

si setati proprietatea Align la valoarea alClient.Adaugati un obiect

TDataSource si un obiect TTable.

Setati Table1 la: Databasename=DBDEMOS,TableName=MASTER.DBF si Active=True

Setati DataSource1 la: DataSet=Table1.

Setati DBCtrlGrid1 la: DataSource=DataSource1.

Adaugati 2 obiecte TDBText in zona nehasurata a obiectului DBCtrlGrid.

Setati DBText1 la : DataSource=DataSource1,DataField=CO_NAME apoi setati

Color=clLime si Font Size=14 Color=Red.

Setati DBText2 la : DataSource=DataSource1,DataField=CUR_PRICE apoi setati

Color=clYellow si Font Size=14 Color=Blue.

Adaugati un obiect TDBEdit si setati DataSource=DataSource1 si respectiv

DataField=RCMNDATION.

Tastati F9 si executati aplicatia.Puteti utiliza butoanele de scroll,

pentru a afisa toate inregistrarile,sau puteti adauga si un obiect de

tip DBNavigator.

Puteti utiliza orice combinatie de controale de tip TDBEdit,TDBText,

TDBMemo sau TDBImage (vezi si Prj82).

Obiectul prezinta si o serie de proprietati destinate pentru adaptarea

modului de prezentare la necesitatile reale.Pentru a permite sau inter-

zice editarea activa a datelor se poate utiliza proprietatea EditMode.

Pentru a seta numarul de coloane si de randuri se pot utiliza proprieta-

tile ColCount si RowCount.Pentru a selecta culoarea inregistrarii active

(cea pe care se gaseste cursorul),se poate utiliza proprietatea Selected-

Color.

Dintre metode,se remarca metoda KeyDown care permite executarea unei

anumite operatii atunci cand tasta specificata este apasata.

Dintre evenimente se remarca OnPaintPanel,care poate fi apelat atunci

cand utilizati fondul obiectului pentru a adauga o imagine grafica oare-

care.In acest caz se va apela Canvas cu coordonatele (0,0) pentru coltul

din stanga sus al obiectului TDBCtrlGrid.

TDBCtrlGrid se recomanda mai ales pentru tabelele cu un numar relativ

mic de inregistrari,deoarece tabelele mari si numarul prea mare de con-

troale pot bloca memoria de operare cu date inutile.Proiectati acest

gen de aplicatii in functie de baza de date si de hard-ul instalat.


-91- DataControls - TDBChart

TBDChart este un obiect specializat pentru prezentarea datelor din

bazele de date sub forma de reprezentari grafice.Pentru acest scop,

obiectul apeleaza la un subprogram intitulat TeeChart version 3 care este

inclus in pachetul de date Delphi 3.Acest program opereaza in format de 32

de biti,permite reprezentari 2D si 3D,pentru 11 tipuri de grafice,cu

functii statistice,zoom si design personalizat.

TDBChart este derivat din TChart.Pentru preluarea datelor din baza de

date utilizeaza un obiect TDataSource si un obiect TTable sau TQuery.

Pentru a seta acest obiect,executati un click de mouse cu butonul drept,

in interiorul obiectului si alegeti Edit Chart.

EXEMPLU: (vezi si Prj83)

Salvati o fila noua si proiectul in Prj83.Adaugati un obiect TDataSource,

un obiect TTable,un obiect TDBGrid,un obiect TDBNavigator si un obiect

TDBChart.

Setati Table1 la: Databasename=DBDEMOS,TableName=HOLDINGS.DBF,Active=True.

Setati DataSource1 la: DataSet= Table1.

Setati DBGrid1 la: DataSource=DataSource1.

Setati DBNavigator la: DataSource=DataSource1.

In acest moment aplicatia se poate utiliza pentru a prezenta datele din

tabelul HOLDINGS.DBF.Pentru a reprezenta grafic o parte dintre date,se

poate utiliza obiectul DBChart1.De exemplu,pentru a reprezenta numarul de

actiuni al fiecarei companii,sub forma de sector de cerc:

Selectati DBChart1,executati un click de mouse cu butonul drept si alegeti

EditChart.Din fereastra EditingChart1 alegeti butonul Add,si Pie dintre

tipurile de grafice afisate.Confirmati cu OK.Apoi alegeti Series si apoi

DataSource.Din obiectul ComboBox(in care este afisat Random Values),

alegeti optiunea Dataset,apoi in ComboBox Dataset alegeti Table1,in

Labels alegeti: SYMBOL si in Pie alegeti: SHARES.Apoi apasati butonul

Close.Daca doriti sa schimbati titlul graficului,deschideti din nou

fereastra Edit Chart,alegeti Chart,apoi Titles si introduceti in campul

Memo textul dorit (in loc de TDBChart).

Daca doriti,puteti utiliza si restul de optiuni,pentru a personaliza

aspectul graficului afisat.

Tastati F9 si executati obiectul.Puteti observa in reprezentarea grafica

pachetul majoritar de actiuni si apoi utilizati DBNavigator pentru a

identifica inregistrarea respectiva.

Pentru a obtine o alta reprezentare grafica,se poate utiliza acelasi

obiect.De exemplu,pentru a afisa numarul de actiuni cumparate la o anumita

data calendaristica (PUR_DATE):

Selectati DBChart1.Deschideti din nou fereastra EditChart.Apasati butonul

Delete pentru a sterge graficul vechi si Add pentru a adauga un grafic

nou.Alegeti Line si OK.Apoi Alegeti Series,Data Source si setati Dataset

la Table1,Labels=PUR_DATE,X:=SHARES si Y:=PUR_DATE.Inchideti cu Close.

Exista situatii cand se pot reprezenta pe acelasi grafic,doua sau

mai multe situatii.In acest caz,pur si simplu nu stergeti primul grafic,

ci adaugati unul nou,cu butonul Add.Urmatoarea reprezentare va fi afi-

sata cu o culoare cat mai contrastanta (puteti alege culoare).

Pentru ca doua sau mai multe seturi de valori sa poata fi reprezentate

in acelasi grafic,trebuie ca valorile reprezentate sa fie situate intre

aceleasi limite.Pentru aceste situatii,se va prefera reprezentarea sub

forma de Lines. (vezi si Prj84)


-92- Decision Cube

Decision Cube este o paleta de componente destinate pentru preluarea si

afisarea datelor dintr-o baza de date,atunci cand se utilizeaza o formula

complexa de selectie a datelor(utilizand o functie de sumatie si un cri-

teriu de grupare a datelor sumate).Obiectele care formeaza aceasta paleta

de optiuni sunt: TDecisionCube,TDecisionQuery,TDecisionSource,TDecision-

Pivot,TDecisionGrid si TDecisionGraph.Cele sase obiecte se utilizeaza de

obiecei impreuna,dar pot fi combinate si cu alte obiecte.De exemplu,un

obiect TDecisionQuery poate fi combinat si cu un obiect TDataSource si

un obiect TDBGrid pentru a afisa datele in forma clasica.

TDecisionQuery este echivalent cu TDBQuery si este utilizat pentru

preluarea datelor cu ajutorul unei comenzi SQL.TDecisionCube este obiectul

cheie din acest grup si este utilizat pentru a selecta modul de afisare

pentru datele selectate prin comanda SQL.Acest obiect prelucreaza formatul

datelor,astfel incat sa fie compatibil de TDecisionGrid.TDecisionSource

este echivalent cu TDataSource.Are rolul unui tampon de memorie,care va

fi suportul de memorie pentru unul sau mai multe obiecte de tip TDecision-

Grid.TDecisionPivot este echivalent cu TDBNavigator si prezinta un set

de butoane,care permit afisarea rapida a rezultatului dorit.Se utilizeaza

pentru a afisa una dintre instantele obiectului.TDecisionGrid este echi-

valent cu TDBGrid si este utilizat pentru afisarea datelor preluate de

la obiectul TDecisionSource.TDecisionGraph este echivalent cu TDBChart si

se utilizeaza pentru a prezenta grafic datele selectate.

Aceste obiecte nu ofera functionalitati diferite de cele ale obiectelor

din DataAccess si Data Controls.Datele si rezultatele afisate cu aceste

obiecte pot fi afisate si cu obiectele clasice,dar obiectele din paleta

Decision Cube simplifica foarte mult operatiile de selectie si ofera o

un aspect grafic superior.Are rost sa utilizati aceste obiecte,atunci

cand se efectueaza un numar destul de mare de operatii,intr-o baza de

date mai extinsa,cu o comanda SQL care include SUM si GROUP BY.

EXEMPLU: (vezi si Prj85)

Salvati o fila noua si proiectul in Prj85.Adaugati cate un obiect din

fiecare tip inclus in paleta DecisionCube.

Setati DecisionQuery1 la: Databasename=DBDEMOS,apoi introduceti urmatoarea

comanda SQL:

SELECT PaymentMethod,SUM(EmpNo) FROM Orders.db GROUP BY PaymentMethod

Confirmati cu OK si setati Active=true.

Setati DecisionCube1 la : DataSet=DecisionQuery1.Eventual alegeti si

DimensionMap si in Decision Cube Editor setati Active Type=Active pentru

ambele campuri de date accesibile (PaymentMethod si SUM OF EmpNo) apoi

setati MaxCells=50,MaxDimensions=16 si MaxSummaries=50.

Setati DecisionSource1 la: DecisionCube=DecisionCube1.

Setati DecisionPivot1 la: DecisionSource=DecisionSource1.

Setati DecisionGrid1 la: DecisionSource=DecisionSource1 si DefaultColWidth

la valoarea 50.Eventual modificati culorile si fonturile.

Setati DecisionGraph1 la: DecisionSource=DecisionSource1.

Tastati F9 si executati aplicatia.

DecisionGrid va afisa cele doua coloane solicitate (PaymentMethod si

SUM OF EmpNo iar DecisionGraph1 va afisa reprezentarea grafica a acelorasi

valori.Daca apasati butonul PaymentMethod se va afisa alternativ suma

totala a tuturor valorilor EmpNo (suma tuturor grupelor).

Puteti personaliza aspectul,utilizand proprietatile obiectelor.


-93- QReport

Peleta de componente denumita QReport include o serie de obiecte des-

tinate pentru a realiza documente de sinteza (rapoarte) in care datele

sunt preluate din diverse surse: locale,din baze de date,din obiecte,sau

sunt editate in timp real.

Documentele de tip raport (Quick Reports),pot fi subimpartie in mai

multe benzi de date,asemanator cu o pagina de ziar,astfel incat datele

de acelasi fel sa fie cat mai usor de identificat in interiorul paginii.

Principalele benzi care pot fi utilizate se numesc: header (antet),title

(titlul),detail sets (subtitluri),summaries(rezumate) si footer(sfarsit).

Pentru preluarea datelor dintr-o baza de date,se utilizeaza obiecte

de tip DataSource,TTable si TQuery,iar pentru afisarea datelor se utili-

zeaza obiectele specializate din paleta QReport.

QuickReport este de fapt un program de sine statator,inclus in Delphi

sub licenta QuSoft AS.Informatii si actualizari se pot solicita pe site-ul

http://www.qusoft.com.

Obiectele din QReport se pot utiliza pentru a realiza o pagina de ziar,

un document complex care include text,fotografii si grafice,o fisa de

observatie a unor fenomene complexe (fisa meteorologica,fisa de productie,

fisa medicala etc.) sau pur si simplu pentru a realiza documente cu un

aspect personalizat (albume,sonete,felicitari,reviste ilustrate etc.).

Un document realizat cu QReport este un obiect complex,format dintr-un

numar oarecare de obiecte componente si ocupa un spatiu destul de extins

de memorie.Este bine sa tineti cont de memoria de RAM instalata,atunci

cand proiectati sau operati cu astfel de obiecte.Daca memoria de operare

este la limita,riscati ca documentul sa nu poata incarca toate obiectele

de care are nevoie (o parte din date "se pierd pe drum" ) in special cele

care contin reprezentari grafice.

Documentele realizate,au un aspect grafic deosebit si pot fi imprimate

sau arhivate extrem de usor(cu un click de mouse).In plus,pentru a limita

la maximum memoria consumata,exista si posibilitatea de a extrage din

document doar datele de tip text,care pot fi arhivate sub forma de fila

tip .txt.

In mod obisnuit,acest gen de documente nu se utilizeaza pentru a

arhiva date,ci doar pentru a grupa si sistematiza sub o forma oarecare

datele arhivate la diverse locatii de memorie.Practic,documentul de tip

raport,este ca un fel de sablon proiectat pentru a acumula date din mai

multe surse diferite (Exemplu: pagina principala a site-urilor de Internet

gen Yahoo,Opera etc.).

Ziarele si site-urile Internet utilizeaza alte programe,dar realizeaza

acelasi obiectiv.

Un document de tip QuickReport,poate fi utilizat nu numai pentru a

citi datele din memorie,ci si pentru a actualiza permanent un anumit numar

de baze de date.Exemplu: un document cu mai multe obiecte de editare,

conectat simultan la mai multe baze de date.

Daca se combina cu obiecte de tip Internet,un astfel de document poate

opera si cu date preluate din retea (eventual datele din retea pot fi

initial arhivate local si apoi preluate intr-un document QReport).

In concluzie,un astfel de document se proiecteaza cu scopul de a

inlocui mai multe file simple de tip Form.In loc sa deschideti si sa

inchideti permanent un anumit numar de file,QReport permite accesul la

toate obiectele necesare,intr-o singura fila.


-94-

Obiectele incluse in aceasta paleta sunt:

QuickRep -este obiectul de baza,utilizat ca suport pentru toate celelalte

obiecte.Este primul obiect care trebuie adaugat in Form.Optional se poate

utiliza un obiect TTable si un obiect tip TDataSource,pentru a conecta

QuickRep la o baza de date.Este un obiect vizual si ia automat dimensiunea

filei care il contine.Pentru a putea observa rapid rezultatul operatiilor

preliminare,executati in orice moment un click de mouse cu butonul drept,

in aria obiectului QuickRep.Din caseta de optiuni,alegeti Preview.

In mod similar,puteti imprima documentul,sau puteti arhiva rezultatele


Yüklə 1,42 Mb.

Dostları ilə paylaş:
1   ...   8   9   10   11   12   13   14   15   16




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin