HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Boríték címező komponens készítése


Példaprogram letöltése

6962 bájt

Készítünk egy komponenst, amely segítségével borítékokat címezhetünk meg. A címzés során természetesen megadható a feladó és a címzett neve és adatai. Megadhatjuk továbbá a használni kívánt boríték nagyságát. A feliratok igazítását és tördelését a komponens végzi el. Minden egyes felirathoz külön betűtípust használhatunk.

A mellékelt példaprogram megnyitása előtt a FillEnvelope.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
Az Envelope property-ben választhatjuk ki a használni kívánt boríték méretet. Ha az Env_Custom-ot választjuk, akkor az EnvCustomWidth és EnvCustomHeight tulajdonságokban tetszőleges méretű borítékot megadhatunk.
A komponens belsejében két összetett objektum található, azonos felépítéssel. Ezek a Sender (küldő) és a Recipient (címzett) objektumok. Ezeknek az objektumoknak a belsejében van lehetőségünk megadni az olyan adatokat, mint név, település, utca / házszám és irányítószám. Mindegyik felirathoz külön betűtípust rendelhetünk.
A komponens automatikusan elrendezi a megadott feliratokat. A borítékot fektetve kell elhelyezni a nyomtatóban, mert a nyomtatás így történik.
A nyomtatás a Print metódus meghívásával történik. A Preview metódus segítségével lehetőségünk van nyomtatási képet kérni.
Komponensünket a TComponent osztályból származtatjuk. Az Envelope property létrehozásához definiálnunk kell egy új típust.
TEnvelopes = (Env_6, Env_7, Env_9, Env_10, Env_Dl, C_5, C_6, B_5, Env_Barional, Env_Custom);
A SetEnvelope metódusban gondoskodunk arról, hogy az FEnvCustomWidth és FEnvCustomHeight property-kben megjelenjenek a kiválasztott boríték méretei, milliméterekben.
A feladó és címzett adatainak tárolásához el kell készítenünk egy új osztályt (TAddress), amelyet a TPersistent osztályból kell származtatnunk. Ennek az osztálynak annyi a feladata, hogy megjegyezze a címzéshez szükséges adatokat és az egyes feliratokhoz tartozó betűtípusokat.
Térjünk vissza a TFillEnvelope osztályhoz.
A nyomtatást QuickReport komponensek segítségével végezzük el. Ehhez létre kell hoznunk a háttérben egy Form-ot, azon pedig egy QuickRep komponenst. A Form létrehozásánál a Create metódusnak ez esetben a Nil paramétert kell megadnunk, nem az Applicationt.
FForm:=TForm.Create(Nil);
A Reporton el kell helyeznünk egy QRBand komponenst. Ezen tudjuk elhelyezni a nyomtatáshoz szükséges QRLabel elemeket.
A QuickReport osztályainak és típusainak használatához a uses listát bővítenünk kell a QuickRpt, QRCtrls, Printers és qrprntr unitok neveivel.
A Print és a Preview metódusokban át kell másolnunk a property-kben megadott feliratokat, valamint gondoskodnunk kell a Report megfelelő metódusának meghívásáról.
Az adatok átmásolását és a címkék pozícionálását a SetPositions metódus végzi el.
procedure SetPositions;
A QuickReport-nak van egy rossz tulajdonsága. NT alapú operációs rendszer esetén hiába méretezzük a lapot egyedileg, a nyomtatás nem lesz jó. A nyomtatási kép ugyan megfelelő lesz, de a nyomtatás korrigálhatatlanul elcsúszik. Ezért a nyomtatás beállítását A4-es méretű lapon végezzük el. Az A4-es lap jobb felső sarkában kell elhelyeznünk a nyomtatandó boríték feliratait.
A boríték méretét milliméterekben ismerjük, de most képpontokra van szükségünk. Az átváltáshoz szükséges szorzót meghatározhatjuk a Report adataiból.
PixelPerMM:=FReport.Width/FReport.Page.Width;
Ennek megfelelően már beállíthatjuk az FBand magasságát is.
FBand.Height:=Round(FEnvCustomHeight*PixelPerMM);
A QRLabel-ek az FQRLabels, 8 elemű tömbbe vannak felfűzve. Az első 4 elem a feladó adatait, az utolsó 4 a címzett adatait fogja tartalmazni.
Az egyes címkéket egymás alatt kell elhelyeznünk. Ezt csak egyesével tudjuk elvégezni, mert be kell állítanunk a megfelelő betűtípusokat is, valamint a következő sor meghatározásához ismernünk kell az előző címke Top és Height tulajdonságát.
Előfordulhat, hogy egy címkénél sortörésre van szükség, mert tartalma túl hosszú. A címke szélességét maximum a boríték feléig engedjük. A sortöréses magasság meghatározását a GetHeight függvény végzi el.
function GetHeight(c: String; w: Integer; Font: TFont): Integer;
A c paraméterben kell megadnunk a feliratot, a w-ben a jelenlegi szélességet, végül a Font-ban a használni kívánt betűtípust. A függvény a méretezést egy TLabel objektum segítségével végzi el. Eredményül a sortörés megjelenítéséhez szükséges magasságot adja.
A címzetthez tartozó feliratokat középre kell rendeznünk. Ehhez minden QRLabel komponenst azonos méretűre kell állítanunk. A szükséges méret a MaxWidth változóba kerül.
MaxWidth:=0;
if MaxWidth<GetWidth(FRecipient.CoName,FRecipient.CoNameFont) then
  MaxWidth:=GetWidth(FRecipient.CoName,FRecipient.CoNameFont);
Amikor a címkék Left és Top koordinátáit határozzuk meg, figyelembe kell vennünk, hogy számunkra a fektetett A4-es lapnak csak a jobb felső sarka a fix pont.

Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 159. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |