|
parte dintre datele afisate,sau daca doriti sa arhivati modificarile efec-
|
səhifə | 11/16 | tarix | 03.01.2019 | ölçüsü | 1,42 Mb. | | #89992 |
| 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
Dostları ilə paylaş: |
|
|