XReport 1.0
Felhasználói kézikönyv
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).
Pontos pozicionálás a lapon.
Nyomtatás és Nyomtatási kép (Print preview).
Futás közben a felhasználók módosíthatják a report kinézetét.
A jelentéshez csatlakozhat több lista is (composite report), a lista egy tételéhez vagy csoportjához, összegéhez kapcsolódhat al lista a listától különböző adatforrással)
Különböző csoport elemek: fejléc, lábrész (lap, oszlop vagy allista), csoport (group), összeg (summary) és tétel (detail)
A lista elemei (tételek, csoportok, összegek, stb) igazíthatók hagyományosan a jelentés tetejére, de középre és az aljára is.
Adatkapcsolt Címke, memo, kép, checkbox, progressbar és grafikus vezérlők (vízszintes, függőleges vonal, kör, négyszög).
A memo mezők nőni tudnak függőlegesen és tördelhetők vízszintesen (szó és karakter szerint).
A grafikus vezérlők alja "odaragad" az alatta lévő komponens tetejéhez vagy a csoportos vezélő aljához (különösen hasznos ez akkor, ha mondjuk egy vagy több memo mező keretes listában van és a keret oszlopainak együtt kell nôniük a memo mezővel)
Több oszlopos nyomtatás.
Mértékegységek: Pixel, Cm, Inch.
Bővíthető komponenskészlet, a példaprogram egy vonalkód komponens forráskóddal.
A label értékének vagy group feltételnek megadható kifejezés is (több mint 30 beépített függvénnyel) - HTML és CSV export
CLX alapú fejlesztőkörnyezet:
Kylix2 vagy Delphi6
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.
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.
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.
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.
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.
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.
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.
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.