| (kliknite za veću sliku) |
Sve je lepo išlo: godinama sam pisao Delphi 6 aplikacije koje su radile korektno; znao sam kako da uradim ono što mi je potrebno ili barem gde da potražim informaciju koja mi nedostaje. A onda je šef doneo Delphi 7 na koji treba preći; dobio sam nekoliko dana za uigravanje, za proveru da li sve što je do sada radilo može da radi i dalje, uz zadatak da obratim pažnju na unapređenja koja novi Delphi nudi, a posebno na novi alat, Rave (Report Authoring Visual Environment), koji ima neke mogućnosti kojih u QuickReport-u nema.
Istraživanje počinje
Prvi problem je bio dokumentacija, pošto je ono što stiže uz Delphi dovoljno tek za početak. Ostala, razbacana dokumentacija postoji na Internetu. Počeo sam od www.nevrona.com gde se nalazi nekoliko PDF fajlova o Rave-u kao i Tips and Tricks i Q&A sekcije. Najkorisniji izvor informacija bile su svakako Nevrona news grupe, news.nevrona.com.
Za pripremu izveštaja treba da postavimo nekoliko komponenata sa Rave palete u Delphi-ju na formular, zatim u Rave Designer-u napravimo izveštaje, a onda iz Delphi programa šaljemo određene delove izveštaja na izvršenje. Za početak ćemo se osvrnuti na Rave Designer, vizuelno okruženje Rave-a koje startujemo iz C:Rave5Rave.exe. Druga mogućnost je da otvorimo novi Delphi project, postavimo TRvProject komponentu na formular i dvokliknemo na nju. Dobićete nešto nalik na sliku 1. Izrada izveštaja započinje se na strani koju vidite u centru ekrana. Osobine strane se standardno određuju na paleti osobina koja se nalazi sa leve strane. Ukoliko ne vidite paletu osobina, pređite na stablo na desnoj strani i kliknite na znak plus pored Report Library a zatim otvorite Report 1 / Page 1. Sada pod Report Library imate samo stranu Page1.
|
Na navigacionom delu se nalaze komponente: Standard, Report, Bar Code i Drawing, a ostalo su palete alata. Komponente ćete postavljati na stranu i one će predstavljati određene objekte. Standard paleta sadrži tekst-komponentu sa kojom pravimo jedan red teksta, Memo komponentu kada nam treba nekoliko linija teksta, Section komponentu za grupisanje, Bitmap i Meta komponente za umetanje slika, FontMaster za određivanje standardnih fontova za određene delove izveštaja i konačno PageNumInit koju ćemo koristiti za ispisivanje brojeva strana.
Report paleta obuhvata DataText, DataMemo, CalcText, DataMirrorSection, Region, Band, DataBand, DataCycle, CalcOp, CalcTotal i CalcController. Komponente sa crvenom tačkicom u gornjem desnom uglu koriste se za prikaz podatake iz baze. Komponente sa zelenom tačkom su nevizuelne – pojaviće se u stablu projekta sa desne strane ali ne i na samoj strani. Komponente Band i DataBand smeštaju se u Region, pa pre njihovog postavljanja podesite region.
Ostale palete su prilično intuitivne – Aligment, Fonts, Fill... Takođe, tu je i nekoliko komponenata za rad sa bazama podataka, kao što su Database Connection, Direct DataViews, Driver DataViews.
A sada, na posao!
| (kliknite za veću sliku) |
Vratićemo se u Delphi okruženje – predlažem da zatvorite Rave i započnete novi projekat. Na prazan formular postavite TDataSource komponentu sa palete Data Access, jedan TTable sa BDE palete i jedan TDBGrid. Kliknite na Table1 na formularu i u Object inspector-u podesite da je Database Name: DBDEMOS, a za Table name odaberite customer.db. Zatim dvoklik na Table1 i u Fields Editor-u desnim tasterom miša izaberite Add All Fields. Zatvorite Fields Editor, kliknite na DataSource1 i za DataSet odaberite Table1. Kliknite na DBGrid1 i za DataSource odaberite DataSource1. Sada kliknite na Table1 i u Object Inspector-u osobinu Active stavite na true pa će se u DBGrid1 pojaviti podaci. Ekran će izgledati kao na slici 2. Snimite sve u neki folder, npr. C:Primer1.
Na formular dodajte TrvProject, TrvDataSetConnection i TrvSystem. Za RvSystem1 podesite u Object inspector-u da DefaultDest bude rdPreview. Za RvDataSetConnection1 podesite DataSet da bude tabela koju ste malopre pravili, dakle Table1. Za RvProject1 izaberite Engine RvSystem1 i snimite Rave.
Sada idemo u Rave vizuelno okruženje – dvokliknite na RvProject1, pa izaberite File / New. Sada bi trebalo da Rave-u objasnimo sa kojim podacima ćemo raditi. Zato kliknite na šestu ikonu u gornjem redu, New Data Object. Otvoriće se dijalog Data Connections sa izborom od pet elemenata: Data Lookup Security Controler, Database Connection, Direct Data View, Driver Data View i Simple Security Controler. Svakim od njih možete napraviti vezu do neke baze podataka. Na osnovu primera koji smo započeli, odabraćemo Direct Data View i kliknuti na Next. Pojavljuje se RvDataSetConnection1 sa Delphi formulara koja upućuje na Table1 s početka. Pri dnu dijaloga štriklirajte Runtime i Design-time i kliknite na Finish.
Sledeći koraci
Sada smo dakle Rave povezali sa našim podacima; proverite da li se na stablu sa desne strane, pored Data View Dictionary pojavio, plus. Kliknite na njega i pojaviće se DataView1, preko koga dobijamo listu polja koja se nalaze u Table1. Svi delovi izveštaja koji se prave a u vezi su sa nekakvom bazom podataka moraju da se nalaze na Region-u. Region Component je peta komponenta u paleti Report na vrhu ekrana. Spustite jedan Region na stranicu pred vama, raširite ga po čitavoj strani ali tako da ne pređe crvene isprekidane linije koje predstavljaju margine; dimenzije strane se, inače, podešavaju u Edit Preferences meniju.
Proverite da li se na stablu, ispod Report Library u Report1 / Page1 pojavio Region1 koji smo postavili. Ako je sve u redu, sledi zadavanje naslova izveštaja: spustite Band Component (to nije isto i DataBand, koji ima crvenu tačkicu i služi za rad sa podacima iz baze) koji će se zalepiti na vrh. Proširite ga malo povlačenjem zelene tačkice naniže. Zatim sa Standard palete spustite u Band1 Text component. Podesite font po želji i u polju text unesite naziv izveštaja. Kliknite desnim tasterom na Text, izaberite Center pa Horizontally in Parent, a onda ponovite postupak i zadajte Verticaly in Parent da biste ga centrirali.
|
Vratite se na Report paletu. Podaci u Region-u smeštaju se u DataBand. Zato spustite i jedan DataBand na Region1. On će se automatski smetiti ispod Band1, pa ostaje da mu malo povećate visinu. Sledi postavljanje podataka koje želite da prikažete. Visina DataBand1 zapravo predstavlja visinu kolone sa podacima koja će se ponavaljati krećući se po našoj tabeli od vrha ka dnu.
Primećujete na Region-u pored naslova Band1 i DataBand1 plavi i crveni romb koji označavaju da ih treba rasporediti. Kliknite na Band1 i sa leve strane, u polju ControllerBand, dodelite DataBand1. Sada se pored njegovog naslova pojavio plavi trouglić sa vrhom naniže, a pored naslova DataBand1 je crveni trouglić poplaveo. To znači da smo ih uredili tako da je Band1 kontrolisan od strane DataBand1, tj. da se odnosi na njega. Ako je još uvek selektovan Band1 kliknite na tri tačkice sa leve strane u polju BandStyle i otvoriće se dijalog Band Style Editor. U grupi print Locations ostavite čekiran samo Body header (B), što znači da ovaj Band predstavlja Header, a u grupi Print Occurrence štrikliran samo First (1), što znači da će se pojaviti samo na prvoj strani izveštaja. Kliknite na OK.
Pri kraju posla
Sa Report palete u vrhu ekrana odaberite Data Text komponentu i spustite je u DataBand1; to je DataText1. Podesite mu sa leve strane u polju DataView da je DataView1 i sa liste DataField odaberite da je polje CustNo. Postavite u DataBand na isti način još dva DataText-a, DataText2 i DataText3, podesite im DataView i DataField za DataText2 Company, i za DataText3 City na primer. Vodite računa o širini prozora, jer će se podaci pojaviti u širini i visini kakvu ovde postavite.
Snimite sve u direktorijum C:Primer1 kao Project1.rav i zatvorite Rave. Zatim na Delphi formularu proverite da li je RvProject1 u Object Inspector-u upućen na pravi fajl Project1.rav. Da biste proverili kako to sve sad radi, na Form dodajte i jedan TButton, a njegovom onClick događaju dodelite sledeći kod:
procedure TForm1.Button1Click
(Sender: TObject);
begin
RVProject1.Execute;
end;
Snimite ponovo sve i konačno startujte project. Kada kliknete na taster, otvoriće se dijalog sa označenom ReportDestination Preview; ne zaboravite da je RvSystem podešen na DefaultDest. Kliknite na OK i eto vašeg prvog izveštaja!
Nadam se da sam ovim tekstom privukao one koji nisu hteli ili smeli da započnu rad sa Rave-om. Drago mi je ako vam sada ovo deluje jednostavno. Preporučujem da dalje sami istražujete, a u sledećem tekstu bavićemo se složenijim operacijama u Rave-u kao što je upravljanje objektima iz koda i generisanje PDF-a.
|