XReport 1.0

Felhasználói kézikönyv


Bevezető.

Az X-Report egy jelentéskészítő komponens Kylix2 és Delphi6 alá, ami magában foglalja a jelentéskészítő motort, a tervezőt (tervezési és futásidőben) és az előnézetet (print preview).

Tulajdonságok:

Működési feltételek:



Telepítés:

Ha letöltött verzióról van szó ki kell csomagolni valamilyen alkönyvtárba és el kell indítani onnan linux esetén a setup, windows esetén a setup.exe programot. Dobozos változat esetén ezt közvetlenül a CD-ről indíthatjuk. A telepítő meg fogja kérdezni a felhasználó és a cég nevét és a termék aktiválási kódot. Ha ez utóbbit nem adjuk meg, a program shareware-ként működik és a telepítéstől számított 60 nap múlva leáll. Dobozos verzió esetén a CD borítón találjuk az aktiválási kódot, míg letöltött verzió esetén az X-Szoft-tól lehet on-line megvenni azt, ebben az esetben meg kell adni a nevet és a cég nevét is, mivel az így elküldött kód csak a megadott névre és szervezetre érvényes.

A rendszer architektúrája:

Az X-Report jelentéskészítő legfontosabb eleme a TXReport komponens. Ennek tulajdonságaival be lehet a jelentés alapvető paramétereit, a lapméretet, a margókat és hogy fekvő vagy álló lapra nyomtatunk. Ez egy nem vizuális komponens, aminek a komponens editorával lehet vizuálisan megtervezni a jelentést. A tervezőt futásidőben is meg lehet hívni a Design eljárással, majd a tervezési információkat el lehet menteni a SaveToStream utasítással, vagy be lehet tölteni egy másikat a LoadFromStream segítségével.

A TXReport használata:

Elég rátenni a komponenst a formra. Ezután ha duplán kattintunk a komponensre elindul a vizuális tervező. A következő kép fog megjelenni:




A report layout megmutatja a report struktúráját. A control bar-ral ki tudod azt a jelentés elemet (label, memo, header, footer, stb) amit rá akarsz helyezni a jelentésre. Az adatforrás és adatmező lista segítségével pedig könnyebben lehet az adatfüggő elemeket felhelyezni: Ha a Ctrl billentyű lenyomva van tartva amíg az elemet ráhelyezzük a jelentésre akkor a tervező automatikusan kitölti a DataSource és DataField tulajdonságot, míg ha a Shift van lenyomva akkor a mező DisplayName tulajdonságának értéke kerül bele a Text tulajdonságba ami címkék létrehozásakor lehet előnyös.

Használható továbbá a Shift+Del, Ctrl+Ins, Shift+Inst a vágólappal kapcsoaltos parancsok (cut, copy, paste) kiadására. Ki lehet jelölni több objektumot is a Shift nyomógomb lenyomva tartásával.



Referencia kézikönyv:


TXReport:

Ez a fő komponens.


Tulajdonságok:

LeftMargin

RightMargin

TopMargin

Bottommargin Ajelentés bal, job, felső és alsó margója.

Orientation Fekvő vagy álló dokumentum ?

PageSize Lapméret

FiststPage Az első nyomtatandó lap

LastPage Az utolsó nyomatandó lap

Copies A kinyomtatandó példányszám


Methods:

Print Kinyomtatja a jelentést

Preview Megmutatja a nyomtatási képet

Design Meghívja a jelentés tervezőt futásidőben

LoadFromStream Betölti a megtevezett jelentést egy streamből

SaveToStream Elmenti a megtervezett jelentést egy streambe

ExportToStream Kiexportálja a jelentést CSV vagy HTML formában

ItemByName Megkeresi a jelentés megadott nevű elemét

LabelByName Olyan mint az ItemByName de csak TXRLabellel tér vissza.

MemoByName Olyan mint az ItemByName de csak TXRMemo-val tér vissza.

ImageByName Olyan mint az ItemByName de csak TXRImage-gel tér vissza.

ShapeByName Olyan mint az ItemByName de csak TXRShape-pel tér vissza.

HeaderByName Olyan mint az ItemByName de csak TXRHeaderrel tér vissza.

FooterByName Olyan mint az ItemByName de csak TXRFooterrel tér vissza.

ListByName Olyan mint az ItemByName de csak TXRList-tel tér vissza.

SublistByName Olyan mint az ItemByName de csak TXRSubList-tel tér vissza.

SummaryByName Olyan mint az ItemByName de csak TXRSummary-vel tér vissza.

DetailByName Olyan mint az ItemByName de csak TXRDetaillel tér vissza.

Az XReport elem típusai

Csoport elemek:


TXRList:

Egy jelentés több listából állhat (általában azért egy jelentés = egy lista) Minden listának van egy adatforrása, ami a nyomtatás alapja, a rendszer nyomtatáskor az első rekordra állítja az adatforrást, majd soronként végigjárja azt. Ha egy csoport elemre (Pl. TXRDetail) helyezed akkor sub-list lesz belőle aminek más adatforrása lehet mint a TXRList-nek, így egészen bonyolult szerkeszetű jelentést is létre lehet hozni, Pl. A lista adatforrása a számla fejléce, így a listában lévő Detail tartalmazhatja mondjuk a számlaszámot, keltet és a vevő nevét, míg Detail-hez kapcsolt sub-list adatforrása lehet a számla tételei és a sub-list Detail-je már a számla tételek adatait mutathatja meg.


Tulajdonságok:

DataSource. A lista adatforrása, a nyomtatás ez alapján történik

Columns Az oszlopok száma

Columnspace Az oszlopok közötti távolság

Brush A háttér feltöltésére szolgáló Brush

Pen A lap keret rajzolására szolgáló Pen

Picture Háttérkép (Pl. vízjel)

Enabled Engedélyezni vagy tiltani lehet vele a nyomtatást

ListAlignment Ezzel lehet a tételeket a lap tetejére, aljára vagy közepére igazítani.


Események:

OnBeforePrint A lista nyomtatása előtt hívódik meg.

OnAfterPrint A lista nyomtatása után hívódik meg.

OnPrintRecord Mielőtt az adatforrás rekordja nyomtatásra kerül ő meghívódik



TXRSubList


A Detail, GroupHeader, GroupFuuter vagy Summary típusú csoport elemekhez hozzá lehet adni további list elemet, ez ekkor TXRSubList lesz. Ennek saját adatforrása van és a TXRList-hez hasonlóan lehetnek Detail, Header, Footer elemei.


Tulajdonságok:

DataSource. A lista adatforrása, a nyomtatás ez alapján történik

Enabled Engedélyezni vagy tiltani lehet vele a nyomtatást


Események:

OnBeforePrint and OnAfterPrint, a TXRList-hez hasonlóan.



TXRHeader

Ha List elemhez csatlakozik akkor lap fejléc, míg ha Detail elemhez akkor oszlop fejlécként viselkedik. Ha TXRSubListhez adunk TXRHeadert akkor SubList header lesz belőle.

Több mint egy header is csatlakozhat egy elemhez, de ezek közül csak egy lehet engedélyezve.


Tulajdonságok:

Brush A header hátteréhez használt Brush.

Pen A keret rajzolásához használt Pen.

Font A header alapértelmezett font objektuma.

Options A keret jobb, bal, felső és alsó szegélyét lehet vele engedélyezni/tiltani.

Enabled Ezzel lehet engedélyezni/tiltani a nyomtatást.

Name A fejléc neve.


Események:

OnBeforePrint and OnAfterPrint, a TXRList-hez hasonlóan.


TXRFooter

A TXRHeaderhez hasonlóan csatlakozhat TXRList, TXRDetail és, TXRSubList elemhez és a viselkedése attól függ hogy mihez kapcsolódik, csak nem a lap/oszlop/sublist elején hanem a végén jelenik meg.


Tulajdonságok:

Brush A footer hátteréhez használt Brush.

Pen A keret rajzolásához használt Pen.

Font A header alapértelmezett font objektuma.

Options A keret jobb, bal, felső és alsó szegélyét lehet vele engedélyezni/tiltani.

Enabled Ezzel lehet engedélyezni/tiltani a nyomtatást.

Name A fejléc neve.


Események:

OnBeforePrint and OnAfterPrint, a TXRList-hez hasonlóan.



TXRDetail

Ez a jelentés tételsor eleme. A TXRList vagy TXRSubList a hozzá tartozó adatforrás összes elemét ezzel jeleníti meg.


Tulajdonságok:

Brush A detail hátteréhez használt Brush.

Pen A keret rajzolásához használt Pen.

Font A header alapértelmezett font objektuma.

Options A keret jobb, bal, felső és alsó szegélyét lehet vele engedélyezni/tiltani.

Enabled Ezzel lehet engedélyezni/tiltani a nyomtatást.

Name A fejléc neve.


Események:

OnBeforePrint and OnAfterPrint, a TXRList-hez hasonlóan.



TXRGroupHeader

A TXRList vagy TXRSublist adatkészlet elemeire csoportokat lehet szervezni. Ezek a csoport objektumok akkor jelennek meg ha a megadott feltétel megváltozik, Pl. egy cikkszám szerinti cikklistában megváltozik a cikkszám. A TXRGroupheader az ilyen csoportok elején jelenik meg.


Tulajdonságok:

Brush A csoport hátteréhez használt Brush.

Pen A keret rajzolásához használt Pen.

Font A header alapértelmezett font objektuma.

Options A keret jobb, bal, felső és alsó szegélyét lehet vele engedélyezni/tiltani.

Enabled Ezzel lehet engedélyezni/tiltani a nyomtatást.

Name A fejléc neve.

GroupSource,Groupfield A csoport fejléc megjelenik ha a GroupField értéke megváltozik.

GroupExpression Ha az itt megadott kifejezés értéke megváltozik,

a csoport fejléc megjelenik.


Események:

OnBeforePrint and OnAfterPrint, a TXRList-hez hasonlóan.



TXRGroupFooter

A TXRList vagy TXRSublist adatkészlet elemeire csoportokat lehet szervezni. Ezek a csoport objektumok akkor jelennek meg ha a megadott feltétel megváltozik, Pl. egy cikkszám szerinti cikklistában megváltozik a cikkszám. A TXRGroupheader az ilyen csoportok végén jelenik meg.


Tulajdonságok:

Brush A csoport hátteréhez használt Brush.

Pen A keret rajzolásához használt Pen.

Font A header alapértelmezett font objektuma.

Options A keret jobb, bal, felső és alsó szegélyét lehet vele engedélyezni/tiltani.

Enabled Ezzel lehet engedélyezni/tiltani a nyomtatást.

Name A fejléc neve.

GroupSource,Groupfield Ha a GroupField értéke megváltozik a csoport lábrész megjelenik.

GroupExpression Ha az itt megadott kifejezés értéke megváltozik,

a csoport lábrész megjelenik.

Események:

OnBeforePrint and OnAfterPrint, a TXRList-hez hasonlóan.



TXRSummary

Tulajdonságok:

Brush A detail hátteréhez használt Brush.

Pen A keret rajzolásához használt Pen.

Font A header alapértelmezett font objektuma.

Options A keret jobb, bal, felső és alsó szegélyét lehet vele engedélyezni/tiltani.

Enabled Ezzel lehet engedélyezni/tiltani a nyomtatást.

Name A fejléc neve.


Események:

OnBeforePrint and OnAfterPrint, a TXRList-hez hasonlóan.


Nyomtatható elemek:


TXRLabel:

Ez egy egyszerű címke, hasonló a TLabel-hez.


Tulajdonságok:

AutoSize Ha igaz akkor a címke mérete a megjelenítendő szöveg hosszától függ.

Expression Itt kifejezést lehet megadni amit a TXRLabel kiértékel ha a SysData

értéke txsExpression

DataSource A címke adatforrása

DataField A címke adatmezeje

Exportable Le lehet tiltani vagy engedélyezni lehet vele hogy ez az objektum bekerüljön-e a html vagy cvs exportálásba.

Font A címke font-ja

Pen A címke keretének rajzolására szolgáló Pen

Brush A címke hátterének rajzolására szolgáló Brush

Alignment Vízszintes igazítás

VertAlignment Függőleges igazítás

Format Ha az adatmezőben szám van akkor a megjelenítés formátuma

SysData Itt megadhatsz rendszer adatokat (Dátum, idő, lapszám, aktuális példány,

a jelentés lapjainak száma, vagy beállíthatod hogy az adatok összegét, vagy a kifejezés értékét jelenítse meg).

FormattedSumValue Ha igaz akkor az összegzésnél figyelembe veszi a format értékét (azaz csökkenteni lehet a pontosságot)

Hint Tooltip a tervezőben

Enabled Ezzel lehet megjeleníteni/elrejteni a címkét


Események:

OnBeforePrint Nyomtatás előtt hívódik

OnAfterPrint Nyomtatás után hívódik



TXRMemo:

Ez egy memo elem, hasonló a TMemo-hoz.


Tulajdonságok:

DataSource A memo adatforrása

DataField A memo adatmezeje

Exportable Le lehet tiltani vagy engedélyezni lehet vele hogy ez az objektum bekerüljön-e a html vagy cvs exportálásba.

Font A memo által használt betűtípus

Pen A memo keretének megrajzolásához használt Pen

Brush A memo hátterének megrajzolásához használt Brush

Alignment Vízszintes igazítás

VertAlignment Függőleges igazítás

Hint Tooltip a tervezőben

CanGrow Ha ez igaz, a memo képes nőni függőlegesen. Ilyenkor az alatta lévő

elemeket automatikusan lejjebb tolja, a csoport elemet pedig amiben

a memo benne van a szükséges mértékben megnöveli.

MaxHeight Ha a memo tud nőni akkor akkor meg lehet adni neki hogy maximum mekkorára nőhet.

WrapMode A törtelés módja (lehet karakterenként, szavanként vagy sehogy

/ekkor a kereten túlnyúló sorok levágódnak/)

Enabled Ezzel lehet megjeleníteni/elrejteni a memo-t.


Események: Ugyanazok mint TXRLabel esetén.



TXRShape:

Ezzel egyszerű alakzatokat lehet rajzolni (vonal, ellipszis, négyszög, stb)


Tulajdonságok:

Pen Az alakzat rajzolására szolgáló Pen

Brush Az alakzatot kitöltő Brush

Hint Tooltip a tervezőnek

Enabled Ezzel lehet megjeleníteni/elrejteni az alakzatot.

Shape Az alakzat típusa.


Események: Ugyanazok mint TXRLabel esetén.


TXRPicture:

Ezzel az elemmel képeket lehet rajzolni a jelentésre.


Tulajdonságok:

DataSource A kép adatforrása

DataField A kép adatmezője

Picture Ezzel statikus képet lehet megadni.

Exportable Le lehet tiltani vagy engedélyezni lehet vele hogy ez az objektum bekerüljön-e a html vagy cvs exportálásba.


Események: Ugyanazok mint TXRLabel esetén.



TXRCheck:

Checkbox elem.


Tulajdonságok:

DataSource Az érték adatforrása

DataField Az érték adatmezője

Text Innen veszi az értéket ha az adatforrás üres

ValueCheckled Az a szöveg amit a text tulajdonság igaz érték esetén vesz vel

ValueUnChecked Az a szöveg amit a text tulajdonság hamis érték esetén vesz fel

AllowGrayed Ha igaz akkor három állapot lehetséges (igaz, hamis vagy semleges)

Exportable Le lehet tiltani vagy engedélyezni lehet vele hogy ez az objektum bekerüljön-e a html vagy cvs exportálásba.


Események: Mint TXRLabel-nél


TXRProgress:


A ProgressBar komponens megfelelője.


Tulajdonságok:

DataSource A pozíció adatforrása

DataField Az adatforrás adatmezője

Position A pozíció ha az adatforrás üres

Max A Position lehetséges maximális értéke

Min A Position lehetséges minimális értéke

Brush A kitöltött terület kifestésére szolgáló ecset

Exportable Le lehet tiltani vagy engedélyezni lehet vele hogy ez az objektum bekerüljön-e a html vagy cvs exportálásba.


Események: Mint TXRLabel-nél


TXRBarcode


Ez egy példaprogram, egy wrapper Andreas Schmidt freeware Barcode komponense fölé (http://members.tripod.de/AJSchmidt/index.html). Ennek CLX-re portolt forráskódját mellékeltük.

Ez jelenleg csak a Kylix2 alatt működik.


Tulajdonságok:

Exportable Le lehet tiltani vagy engedélyezni lehet vele hogy ez az objektum bekerüljön-e a html vagy cvs exportálásba.

DataSource A text mező adatforrása

DataField A text mező adatmezője

Modul A legvékonyabb vonal vastagsága

Ratio A széles és a keskeny vonal aránya

Checksum Engedélyezi vagy tiltja az ellenőrző összeg

számítást (CODE39, EAN8, EAN13)

ChecksumMethod Az ellenőrző összeg számításának módja

Color A háttér színe

ColorBar A vonalak színe

Orientation Vízszintes vagy függőleges lehet

Text A szöveg amit megjelenítünk

ShowText Engedélyezi vagy tiltja a szöveg és a vonalkódtípus ráírását a vonalkódra

Typ A vonalkód típusa


Események: Mint a TXRLabelnél.


A kifejezések szintaktikája (Label és Group)


Operátorok:

<,>,<=,>=,!=,+,-,*,/,|,&

Megjegyzés:

A <> figyelembe veszi a kis/nagybetűt, míg a != nem.

A & bináris ést jelent, a | pedig bináris vagy-ot.

A boolean operátorok, relációk eredménye mindig numerikus, az igaz értéke 1, a hamis 0.


Függvények:


IF(numeric expr,value1,value2)

Ha exp igaz akkor value1-gyel tér vissza, ha nem akkor value2-vel.


numeric ABS(numeric value)

Az abszolút értékkel tér vissza.


string CHAR(numeric code)

A numerikus kódot egy egykarakters stringgé alakítja ami az adott ASCII kódú karaktert tartalmazza.


numeric ORD(string value);

A string első karakterének ASCII kódja.


numeric VAL(string value)

Stringet számmá alakít.


string FORMATTEDNUMERIC(string format,numeric value)

Számot lehet vele formázni, a FormatFloat Kylix függvény megfelelője.


numeric INT(numeric value)

Kerekít, mint a Round.


string ENCODEDATE(numeric year,numeric month ,numeric day)

Egy string időbélyeget állít elő az év, hó, nap számókból.


numeric YEAR(string timestamp)

Az időbélyeg éve


numeric MONTH(string timestamp)

Az időbélyeg hónapja


numeric DAY(string timestamp)

Az időbélyeg napja


numeric DAYOFWEEK(string timestamp)

A nap száma a héten


numeric DAYOFYEAR(string timestamp)

A nap száma az évben


numeric WEEKOFYEAR(string timestamp)

A hét száma az évben


numeric HOUR(string timestamp)

Az időbélyegben lévő óra


numeric SECOND(string timestamp)

Az időbélyegben lévő perc


numeric MINUTE(string timestamp)

Az időbélyegben lévő másodperc


string STR(numeric value)

Számot stringgé alakít


string COPY(string src, numeric start, numeric length)

Mint a Kylix copy függvénye, string-ből részkarakterláncot vág ki


number LENGTH(string value)

A string hosszával tér vissza


string PRETTY(string value)

A szavak első betűjét nagyra konvertálja a többit kicsire, a köztük lévő fölösleges space-eket kivágja. Pl. 'goDA aTTilA'->'Goda Attila'


string UPPER(string value)

Nagybetűsre konvertálja a stringet


string LOWER(string value)

Kisbetűsre konvertálja a stringet


string DATE()

Az aktuális dátumot adja visza szövegesen


string TIME()

A rendszeridőt adja vissza szövegesen


string SOUNDEX(string)

A Kylix Soundex-nek felel meg


string NOW(numeric diffdays)

Időbélyeg string az aktuális időpontról + diffdays- számú nap.

Pl. Year(Now+12) megmondja hogy 12 nap múlva hányadik évben leszünk.


numeric POS(string substr, string srcstring)

Úgy működik minta Kylix POS függvénye (megkeresi substr-t srcstring-ben)


numeric SQRT(numeric value)

Négyzetgyök


numeric DIV(numeric op1, numeric op2)

Maradék nélküli osztás


numeric MOD(numeric op1, numeric op2)

Az osztás maradéka


numeric DIFFDATE(string op1, string op2)

Két időbélyeg közötti napok száma


SUM(datafield[,precision])

Az adatmező értékét összegzi, ha precision meg van adva akkor a megadott pontossággal.


AVG(datafield,precision)

Mint SUM de átlagot számol.


Bővítések:


Lehetőség van új elemket is fejleszteni az Xreport-hoz. Ehhez új elemet kell leszármaztatni a TXRPrintable (vagy a TXRDBPrintable) objektumból:


TSamplePrtItem = class(TXRPrintable)


Ezután felül lehet írni ennek a Draw virtuális eljárását így azt rajzolhatunk az új elemre amit akarunk.


procedure Draw(c:TXPrtCanvas); override;


A paraméterként kapott TXPrtCanvas-ra az alábbi eljárásokkal tudunk rajzolni:


procedure Line(x1,y1,x2,y2:integer);

procedure RRectangle(x1,y1,x2,y2,x,y:integer);

procedure Rectangle(x1,y1,x2,y2:integer);

procedure Arc(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer);

procedure Arc(X, Y, W, H, Angle, AngleLength: Integer);

procedure Chord(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer);

procedure Chord(X, Y, W, H, Angle, AngleLength: Integer);

procedure Pie(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer);

procedure Pie(X, Y, W, H, Angle, AngleLength: Integer);

procedure Polygon(const Points: array of TPoint; Winding: Boolean = False;

StartIndex: Integer = 0; NumPts: Integer = -1);

procedure Polyline(const Points: array of TPoint; StartIndex: Integer = 0;

NumPts: Integer = -1);

procedure PolyBezier(const Points: array of TPoint; StartIndex: Integer = 0);

procedure PolyBezierTo(const Points: array of TPoint; StartIndex: Integer = 0);

procedure Plot(X,Y:integer;Color:TColor);

procedure Ellipse(x1,y1,x2,y2:integer);

procedure Bitmap(x1,y1,x2,y2:integer;bmp:TBitmap);

procedure TextOut(x1,y1,x2,y2,x,y:integer;txt:string;align:integer);

procedure SetPen(p:TPen);

procedure SetBrush(b:TBrush);

procedure SetFont(f:TFont);


Az új elemet regisztrálni kell a RegisterXRptObj eljárással a unit inicializálási részében:


initialization


RegisterXRptObj('Extension',TSamplePrtItem,HInstance);


Ehhez szükség van egy 24x24 pixeles bitmap erőforrásra is, aminek azonos a neve az új elem nevével. Ha valami nem világos a TXRBarcode elem forráskódja sokat segíthet.


A kiterjesztések használata:


Ez elég egyszerű. Csak be kell tenni ezt a unitot valamelyik telepített csomagba, majd amikor használni akarjuk hozzá kell adni az új elem(ek) forráskódját az alkalmazás projectjéhez.