HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Oldal helyzetének megváltoztatása nyomtatás közben


Példaprogram letöltése

4528 bájt

Delphi-ből nyomtatni nem csak a QuickReport komponenseivel lehet, hanem a Printer objektum használatával is. Bár ez jóval bonyolultabb, mégis sok esetben használható, főleg speciális nyomtatási feladatok elvégzése esetén. Ebben a cikkben azt vizsgáljuk meg, hogy hogyan tudjuk az így kinyomtatott több oldalas dokumentumoknál meghatározni az oldalak tájolását.

A mellékelt példaprogramban egy olyan egyszerű nyomtatási feladatot végzünk el, amelyben egy két oldalas dokumentumot fogunk kinyomtatni úgy, hogy az első oldal álló, a második pedig fekvő helyzetű lesz. Mindegyik oldalra egy-egy sor szöveget írunk ki.
A nyomtatást a már említett Printer objektumon keresztül végezzük el, amelynek használatához a unit uses részében hivatkozni kell a printers unit-ra.
A nyomtatást a Printer objektum BeginDoc eljárásával indíthatjuk el. A printer objektumnak van egy Canvas objektuma, amire ugyanúgy rajzolhatunk, mint mondjuk egy komponens Canvas-ára, a különbség csak annyi, hogy a rajz, illetve szöveg nem a képernyőn, hanem a nyomtatón jelenik meg.
Mivel az oldal alapértelmezetten általában álló helyzetű, így ennek beállításával még nem kell foglalkoznunk.
Amikor kiírtuk a szöveget a Canvas-ra, lezárjuk az oldalt az EndPage eljárással. Ennek paramétereként a Printer objektum Handle property-jét kell megadni.
A második oldalt már fekvő lapra akarjuk nyomtatni, így gondoskodnunk kell az oldal helyzetének beállításáról. Ehhez először is szükségünk lesz a nyomtató tulajdonságaira, amit a GetPrinter eljárással kérdezhetünk le.
GetPrinter
Osztály: TPrinter
procedure GetPrinter(
ADevice,
ADriver,
APort: PChar;
var ADeviceMode: THandle
);
Ez az eljárás kérdezi le az aktuális nyomtató adatait.
Paraméterek
ADevice
A nyomtató nevét kapjuk meg ebben a paraméterben.
ADriver
A nyomtató meghajtó neve.
APort: PChar
A nyomtatóhoz tartozó port neve.
var ADeviceMode: THandle
Ebben a paraméterben kapjuk meg a nyomtató tulajdonságait tartalmazó struktúrára mutató pointert.
A következő lépés, hogy az adatokat tartalmazó struktúrában módosítsuk az oldal helyzetét. Ehhez a dmFields mezőben be kell állítani a DM_ORIENTATION flag-et, ami azt fogja jelezni, hogy a lap tájolását módosítjuk. Ezt a tulajdonságot ténylegesen a dmOrientation mezőben adhatjuk meg. A fekvő helyzethez a DMORIENT_LANDSCAPE értéket kell megadnunk:
    GetPrinter(dev, drv, prt, dmh);
    dmd:=GlobalLock(dmh);
    with dmd^ do begin
      dmFields:=dmFields or DM_ORIENTATION;
      dmOrientation:=DMORIENT_LANDSCAPE;
    end;
A ResetDC függvénnyel aktualizáljuk az új tulajdonságokat. Ezután megkezdhetjük a második oldal nyomtatását a StartPage eljárással.
A nyomtatás végét az EndDoc eljárással tudjuk közölni a Printer objektummal. Ennek hatására megkezdődik a nyomtatás.

Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2002 évkönyv 227. 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 |