Delphi - QuickReport paletta komponensei

QuickReport paletta 4. rész

forráskód letöltése
A múlt heti cikkünkben már a számla nyomtatásra került, most pedig az összes többi listát fogjuk átnézni. Ezek már korántsem olyan bonyolultak, mint a számla. 1. Összes számlázott cikk (Form3): nagyon egyszerű lista, csupán három sávból áll:
* rbTitle: a lista címét, a készítés dátumát, idejét, és az aktuális lapszámot találjuk meg itt
* rbColumnHeader: a két kinyomtatandó mező megnevezése
* rbDetail: ez a sáv tartalmazza a kinyomtatandó mezőket

2. Összes kiállított számla (Form5): már egy kicsit bonyolultabb, mint az előző, hiszen itt Master-Detail kapcsolatba állított táblákból fogunk nyomtatni. A sávok leírása:
* rbTitle: a lista címét, a készítés dátumát, idejét, és az aktuális lapszámot találjuk meg itt
* rbColumnHeader: a nyomtatandó mezők megnevezésének felsorolása
* rbDetail: a Master tábla nyomtatandó mezőit tartalmazza
* QrSubDetail: a Detail táblából kinyomtatandó mezőket tartalmazza

Ahogy látjuk két összekötött tábla kinyomtatása nem olyan bonyolult feladat, fontos hogy a táblák közötti kapcsolat a nyomtatás előtt már éljen. Az rbDetail sáv szerepe tulajdonképpen nem változik, de bejön a QrSubDetail sáv. Legfontosabb tulajdonsága a DataSet, amely arra a táblára mutat, amely a két tábla közötti kapcsolatban az alárendelt, ez esetünkben a számla tételeket tartalmazó tábla. Lehetne még további ilyen sávokat is letenni, pl.: ha a termékeket nem a számlatételeknél tárolnánk, hanem egy harmadik táblában. Szintén fontos tulajdonság még a FooterBand, amellyel egy láblécként szolgáló sávot rendelhetünk a QrSubDetail-hez, ez a lábléc sáv akkor kerül nyomtatásra, ha a Detail táblában az összes rekord kinyomtatásra került (esetünkben az összes számlatétel), nagyszerűen alkalmazható tehát a minden rekord utáni összesítésre (nálunk ide lehetne elhelyezni pl: számlatételek darabszáma, az eladott mennyiségek és árak szorzatának összesítését).

3. Partnerenkénti eladások (Form6): ez nem más mint egy ún. Group-olt (csoportképzéses) lista, vagyis partnerenként listázza a kiállított számlákat. A listához 5 sávot használunk fel, ezek:

* rbTitle, rbColumnHeader: a már megszokott tartalommal
* QrGroup1: a sávban elhelyezett komponensek csak akkor kerülnek majd kinyomtatásra,
ha a QrGroup1.Expression-ben megadott mező értéke változik (csoportváltás esetén). A
mi esetünkben ez a számla fej adatokat tartalmazó tábla név mezője értelemszerűen.
Fontosabb tulajdonságok:
* ReprintOnNewPage: ha ez igaz, akkor lapdobás után akkor is nyomtatásra kerül a
sáv tartalma, ha egyébként azt nem kellene kinyomtatni, mert nem történt éppen
csoportváltás.
* FooterBand: lábléc sáv csatolására használható. Kiválóan használható a csoport
összesítésére (mi is erre használtuk fel).
* rbDetail: szerepe azonos marad ebben az esetben is.

4. Körlevél (Form7):
Egyetlen rbDetail típusú sávot tartalmaz. Tulajdonképpen a partner tábla megfelelő mezőit (név) nyomtatjuk ki alatta egy rtf file nyomtatására szolgáló QrRichText komponenssel. A nyomtatás megkezdése előtt (QuickRep1.BeforePrint event) betöltjük az rtf állományt a QrRichtext.Lines-ba. Amennyiben bizonyos partnereknek más szöveget akarunk nyomtatni, úgy az rtf file betöltésére használjuk inkább a TQuickRep.OnNeedData eseményt.

5. Több elkészített lista egyszerre történő kinyomtatása.
Gyakorlatilag bármelyik Form-on elhelyezhetjük a QrCompositeReport komponenst. Használata nagyon egyszerű: a nyomtatni kívánt riportokat a komponens AddReports eseményében kell hozzáadni (lásd a példaprogramot). Ez az esemény akkor fut le, ha meghívjuk a Print, Preview metódusokat.
Figyeljünk arra, hogy azoknál a listáknál, ahol az adatállományok csak egy részére van szükségünk, ott ezt a szűrést végezzük el még a TCompositeReport hívása előtt!
Lényegesebb tulajdonsága a Reports, amely nem más mint egy lista (TList), amelynek minden egyes eleme egy pointer a megfelelő riport TQuickRep objektumára mutatva.

Amennyiben eljutottunk idáig, és átnéztük a példaprogram szöveghez kapcsolódó részeit, úgy elmondhatjuk, hogy ami egy átlagos ügyviteli rendszer listázási munkájához szükséges, azt elsajátítottuk.
A következő heti cikkünkben olyan dolgokról lesz szó, amelyeket eddig még nem tárgyaltunk, hiszen a példában szereplő listákhoz használatuk nem volt szükséges.

QuickReport paletta cikksorozat