Adatok nyomtatása – 4. rész

Adatokat már tudunk kezelni, de mi a helyzet akkor, amikor szükségünk van valaminek a nyomtatott formában való megjelenítésére. Ebben az esetben is használhatunk előre elkészített komponenseket, mivel a Delphibe egy QuickReport elnevezésű alkalmazást építettek be a készítők.

Ez a komponenspaletta látható az alábbi ábrán.

Amint látható számtalan eszköz áll rendelkezésünkre, amelyekkel sok szépnyomtatott anyagot állíthatunk elő. Nézzük meg, hogy melyik eszköz mire is szolgál.

 

QuickRep komponens, amely tulajdonképpen maga a riport lesz, amely nyomtatásban meg fog jelenni. Ez egy vizuális komponens, ami azt jelenti, hogy a formon megjelenik egy lap képe, amit a formon a kívánt helyre illeszthetünk. Minden nyomtatandó anyagnak erre kell kerülnie.

A QRSubDetail komponens arra szolgál, hogy másik adatbázisból vagy adattáblából adatokat jeleníthessünk meg a riportunkban. Tipikus felhasználási területe a táblák összekapcsolásakor létrejövő Master-Detail kapcsolat, amelyet majd a következő számban nézünk meg részletesebben.

QRBand egy nagyon gyakran használt komponens, mivel segítségével lehet a nyomtatandó lapon szakaszokat létrehozni. Az, hogy milyen szerepet töltsön be, a BandType tulajdonsága fogja meghatározni. Ezek lehetnek:            

rbTitle

A nyomtatandó anyag címe, csak az első oldalon jelenik meg. Ha a lapfejléc (PageHeader) be van kapcsolva, akkor a cím (Title) utána fog megjelenni.

rbPageHeader

A lap fejléce, ez minden lap tetején meg fog jelenni.

rbDetail

Ebben jelenítjük meg az adatsorokat. A Detail minden rekord esetében megjelenik egyszer. Ebben a blokkban helyezzük el a mezőneveket, amelyekből az adatokat vesszük ki. Erre szolgál a QRdbText.

rbPageFooter

Lap lábléce, minden lap alján nyomtatásra kerül.

rbSummary

Egyszer jelenik meg a nyomtatandó anyag utolsó lapjának az alján. Amennyiben van lap lábléc (PageFooter), akkor az fölött.

rbGroupHeader

Csoportfejléc, aminek segítségével a rekordok közül csoportokat hozhatunk létre valamilyen szempont szerint.

rbGroupFooter

A csoport lábléce. Minden csoport után nyomatatásra kerül. Ebben lehet például különböző kimutatásokat készíteni.

rbSubDetail

Egy speciális típus, mivel ezt a QRSubDetail komponens használja. Mi manuálisan soha ne állítsuk be ezt a típust, használjuk az említett komponenst!

rbColoumnHeader

A nyomtatandó anyag minden oszlopa felett jelenik meg. Kiválóan használható többoszlopos jelentések készítésénél az oszlopok azonosítására.

rbOverlay

Ez igazából már nem használt lehetőség, a visszafele kompatibilitást szolgálja.

rbChild

Szintén egy speciális típus,a QRChildBand komponenshez tartozik. Ne állítsuk be ezt a típust, használjuk az említett komponenst.

A QRChildBand segítségével a blokkok méretét terjeszthetjük ki.

A QRGroup komponenssel csoportokat hozhatunk létre, ami azt jelenti, hogy a mezőket bizonyos szempont szerint csoportosítva jelenítjük meg. Minden csoporthoz tartozik fejléc, amelyben az a mező, vagy kifejezés van, amely alapján a csoportosítást el szeretnénk végezni.

A QRText eszköz segítségével egyszerű szöveget helyezhetünk el a lapon.

A QRDBText adattáblából szedi az információkat, ennek megfelelően természetesen rendelkezik DataField tulajdonsággal.

A QRExpr komponenst kell akkor használnunk, amikor számított értékeket szeretnénk előállítani az adattáblában tárolt adatokból. A kívánt kifejezést az Expression tulajdonságba kell illesztenünk. A segítségünkre van az Expresson Builder nevű ablak, amelyben grafikus vezérlőelemek segítségével összeállíthatjuk a kívánt kifejezést.

A QRSysData komponens a rendszer által szolgáltatott információk megjelenítésére használható. Azt, hogy mit mutasson, a Data tulajdonságában kell beállítani. Itt a következő értékek szerepelhetnek:

qrsColumnNo

Az oszlopok számát adja vissza.

qrsDate

Az aktuális rendszerdátum.

qrsDateTime

Az aktuális dátum és idő.

qrsDetailCount

A rekordok számát jeleníti meg.

qrsDetailNo

Az éppen aktuális rekord száma.

qrsPageNumber

Az aktuális lap száma.

qrsPageCount

Az összes oldal száma.

qrsReportTitle

A nyomtatandó anyagunk címe.

qrsTime 

Az éppen aktuális idő.

A QRMemo komponenssel többsoros szöveget helyezhetünk el a nyomtatandó dokumentumon.

A QRRichEdit komponens nagyon hasonlít a QRMemohoz, de itt már formázhatjuk is a szöveget.

A QRDBRichEdit segítségével adattáblából származó információt jeleníthetünk meg.

A QRShape segítségével keretet helyezhetünk el a lapon. A Shape tulajdonságban állíthatjuk be, hogy milyen keretet szeretnénk.

A QRImage hazsnálatával képet tehetünk a lapra.

Ha a táblában képet is tárolunk, annak megjelenítését teszi lehetővé a QRDBImage.

A nyomtatás előnézetét jeleníti meg ez a komponens.

 Most, hogy már tudjuk, hogy milyen komponensek állnak a szolgálatunkra, el is kezdhetjük a munkát velük. A nyomtatáshoz készítsünk egy új formot, amelyen helyezzünk el egy QuickRep komponenst.

A lapot vonszoljuk oda, ahova szeretnénk, célszerű a bal felső sarokban, mivel ekkor teljesen ki fogja tölteni a formot. Amint látható, a könnyebb tájékozódás érdekében egy vonalbeosztást kapunk, így szebb nyomtatott anyagokat készíthetünk.

A komponenshez állítsuk be a DataSet tulajdonságot. Ez, mint minden adatkezelési komponensnél azt jelöli ki, hogy honnan vegye a QuickRep az adatokat.

Ezután állítsuk be a lap tulajdonságait, amelyhez kapunk egy párbeszédablakot is. Ezt előhívni a QuickRep-en való dupla kattintással lehet.

Azt hiszem, hogy minden mező magáért beszél. Ha végeztünk, akár meg is nézhetjük a nyomtatási képet is a Preview gombra kattintva.

Most már csak arra van szükség, hogy elhelyezzük a kívánt mezőhivatkozásokat és más egyéb statikus információkat a lapunkon. Tegyünk le egy QRBand komponenst, amely automatikusan Title típusú lesz és ebbe egy QRText komponenssel adjunk a jelentésnek címet. Amennyiben a jelentésünk több oszlopot tartalmaz, szükség lehet még egy oszlopfejlécre is. Ehhez tegyünk le még egy QRBand komponenst és a BandType tulajdonságát állítsuk be rbColoumnHeader-re. Már csak az adatokat kell megjeleníteni, amihez, mint már tudjuk, egy Detail blokkra lesz szükségünk. Ezt szintén a QRBand fogja megvalósítani, amennyiben beállítjuk az rbDetail típusra.

Amikor készen van a jelentés szerkezete, akkor következik a tartalom meghatározása. Az oszlopfejlécre tegyünk le annyi QRText objektumot, amennyi oszlopot szeretnénk használni, majd ezek alá helyezzünk el a Detail boxban QRDBText elemeket. Mindegyik DataSet és DataField tulajdonságát állítsuk be. ha jól dolgoztunk, akkor megnézhetjük munkánk eredményét. kattintsunk duplán a QuickRep objektumon, ahogy válasszuk ki a Preview gombot.

Ez természetesen meg kell hívni a programunkból is. Ehhez az alábbi kódrészletet használhatjuk:

form_neve.QuickReport_neve.Prewiev;

Természetesen ki is nyomtathatjuk rögtön, ehhez A Print vagy a PrintBackGround metódust kell meghívni a fentiekhez hasonló formában.

form_neve.QuickReport_neve.Print;

form_neve.QuickReport_neve.PrintBackGround;

A következő részben megnézzük, hogyan lehet táblákat összekapcsolni a Master-Detail kapcsolattal.

Markó Imre - marko.imre@akribisbt.hu