Programozás Delphi 5
Sok fejlesztő szembe kell szervezni egy alkalmazásból nyomtat a szöveges dokumentumok és grafikák. Delphi fejlesztő környezet biztosítja, hogy megoldja ezt a problémát nagyon egyszerűen használható és hatékony eszköz.
nyomtatás mechanizmust tartalmaz egy speciális modul, nyomtatókat. PAS. Elég annyit hozzá, hogy a részben az alkalmazás, és a program készen áll, hogy befolyásolja a nyomtatót. A szervezet a sajtó a forráskódot Tprinter osztály tulajdonságait és módszerek, amelyek hozzáférést biztosítanak a nyomtatók a rendszerben.
Az ebbe az osztályba tartozó programozó tud nyomtatni az alkalmazás nem csak szöveget, hanem képeket és raszteres grafika.
Állítsa be a nyomtatót, akkor a speciális eleme a VCL - a standard rendszer dialógus nyomtató beállítása
Ez a fejezet az alábbi témákat:
- Tprinter tulajdonságok és módszerek egy osztály;
- Nyomtatás Programozás szövegek és felsorolja a húrok;
- programozás nyomdai raszter képeket és önkényes grafikai elemek;
- hogyan kell nyomtatni egy képet formában segítsége nélkül Tprinter osztályban.
Táblázat 9.1.Svoystva és módszerek klassaT p rinter
Inicializ nyomtatás új oldalon. Property Value PAGENUMBER így növekszik
Felhívják az olvasó figyelmét arra a tényre, hogy a legtöbb ingatlan (betűtípusok, Handle, oldalnyi szélességű, PageHeight, megszakítva, nyomtatás, képességei és dr.) Csak olvashatók.
Létrehozása és hivatkozás egy példányát az osztálynak használjuk TPrinter bejelentett egy modult funkciót nyomtatók
funkció nyomtató: TPrinter;
Ez visszaad egy pointert az újonnan létrehozott esetben az osztály.
Amint látható 9.1 táblázat, TPrinter osztály nem csak hozzáférést biztosít a paramétereket az aktuális nyomtató, hanem létrehoz egy indexelt névsorát összes nyomtatót a rendszer számára elérhető nyomtatókat. A nyomtatót a listából lehet aktív az ingatlan printerindex.
print ellenőrzés által végzett leírt módszerekkel megszakítás asztal, BeginDoc, EndDoc ÉS newpage. Egy nagyon fontos szerepet vászon tulajdonság, ami a vázlatot a nyomtató (lásd a fickó. 8). A rendszer segítségével a nyomtató is használható rajz vagy kiadására szövegek, valamint a formák, vagy bármely más komponensnek a vásznon.
Egy programozó szemszögéből a legegyszerűbb módja annak, hogy nyomtassa ki a szöveget a Delphi alkalmazás óta nem változott a korábbi változat Turbo Pascal. Nyomtatás és írjon alkalmazott eljárások writein, amely hozzá van rendelve a nyomtató kimeneti eszköz.
Mi megoldjuk a legegyszerűbb probléma - nyomtatott szentségi kifejezés „Hello, nyomtató!” (Mi a teendő - hagyomány). Ehhez hozzon létre egy konzolos alkalmazás (Fájl menü / Új) és adjuk hozzá a következő forráskódot (ne felejtsük el, hogy szükség van hozzá a felhasználási szakasz nyomtatók modul):
használja SysUtils, nyomtatók;
var FPrint: TextFile;
Assignprn eljárás nyomtatók modul köti a változó szöveges fájlt a nyomtató aktuális rendszer, és létrehozza a kimeneti puffer memóriában. Átírni a kezelő kinyitja a kimeneti eszköz. Writein eljárás nyomtatási sor, és lefordítja a nyomtatási pozíció a következő sorba (eljárási írási ellentétben Writein újsor nem). Végül CloseFile eljárást befejezi a nyomtatást és szétválasztja fájl változó, és a nyomtató (ábra. 9.1).
Ábra. 9.1.Glavnaya formában DemoPrint projekt
Az egyik szereplő, vagy írjon writein húzhatnak több különféle típusaira - .. egész számok, lebegőpontos változók, stb Erre a célra az értékeket vagy változókat vesszővel elválasztva.
Ráadásul, mivel része a kimeneti változók olyan karakterláncok objektumok TSrings És TStringList.
Példaként vegyünk egy kis projekt DemoPrint. Ebben a keresett fájl kiválasztása a fájlmegnyitási párbeszédablak. Attól függően, hogy az állam a kapcsolók RadioGrp csoport fájl kimenet küldeni a képernyőn TMemo alkatrész vagy közvetlenül a nyomtatóra.
A gombra kattintva printBtn TMemo komponens tartalma jelenik meg a nyomtató (lista 9.1.).
Listing 9.1.Sektsiya végrehajtása a modul fő formája DemoPrint projekt
végrehajtására használ nyomtatók;
var FileTxt, PrintTxt: TextFile;
i: = 0 Memol.Lines.Count -1 do WriteLn (PrintTxt, Memol.Lines [i]);
eljárás TMainForrn.RadioGrpClick (Sender: TObject);
kezdődik PrintBtn.Enabled: = RadioGrp.Itemlndex = 0;
Módszer PrintBtnClick felvezető rendelkezik nyomtatási sorok TMemo komponenst. Ebből a célból, minden sor a lista indexelt sorok (vonalak tulajdonság) nyomtatott eljárás writein. Fprint fájl változó be van állítva az alapértelmezett nyomtató.
Handler eljárás RadioGrpciick fájlt letiltja a nyomtatás gombot, amikor bekapcsolja a kimeneti eszköz a nyomtatóhoz.
Az alábbi ellenőrző karaktereket lehet használni nyomtatott szabályozás:
Write (FPrint 'Miután ez a sor költözik egy új vonal', # 10, # 13);
Writein (FPrint 'Miután ez a sor kiderül oldalon Run', ^ L);
Amikor nyomtat egy szöveges fájlt az alapértelmezett betűméret 10. Rendszer A betűtípus beállításait (köztük nyomtatásakor) tulajdonság vászon objektum nyomtatót. Ez a következőképpen nézhet ki:
A Printer.Canvas.Font do
Amikor nyomtat grafikák segítségével vászonra ingatlan típusa TCanvas például Tprinter osztálya nyomtatók modult. Class vászon gazdag beállításegyüttest megjelenítésére különböző grafikai elemek és a bitmap képeket. Részletek a tulajdonságok és módszerek a vászon fejezetben tárgyaljuk 8, így az érdeklődő olvasó hivatkozhatunk rá, de itt fogunk összpontosítani csak a funkciók a grafika nyomtatásához.
Jellemzői a végrehajtás menetrendjét az átviteli folyamat, hogy a nyomtató ki a vászon rejtve maradnak a fejlesztő. Annak érdekében, hogy a nyomtatás elvégzéséhez szükséges a következő lépéseket:
- Ahhoz, hogy indítsa el a nyomtatást használó BeginDoc módszerrel.
- Segítségével TCanvas tulajdonságok és módszerek egy osztály, egy példányát, amely rendelkezésre áll a nyomtató aktuális a vászon ingatlan, hozza létre a rajz telek. Amikor hívja módszerek megfelelő grafikus elemeket a nyomtatóra küldött.
- Nyomtatás teljes EndDoc eljárás kerül meghívásra.
Felhívjuk figyelmét, hogy a fellebbezés a vázlatot a nyomtató funkciót csak a rajt után a nyomtatás. Ellenkező esetben, egy futásidejű hiba lép fel.
Amikor átadja a tartalmat a vászon képe egy papírlapra nyomtatott példányban erősen függ a nyomtató beállításait. Ezért a nyomtatás előtt, kívánatos, hogy ellenőrizze a méretet és lebonyolítását skála, ha szükséges. Ez végre nem csak a túl nagy kép, de ha szükséges, növelje a kis képre a lap méretét.
A méret a papír meghatározni az aktuális nyomtató tulajdonságait PageHeight és oldalnyi szélességű osztály TPrinter.
Ezen túlmenően, a minősége a prezentációs grafika (felbontás) a képernyő és a nyomtató jelentősen változhat. Aktuális nyomtatási felbontás megtalálható a Windows API függvény GetDeviceCaps amely értékkel tér vissza a skála mind vízszintesen, mind függőlegesen, megfelelő számú logikai pixel per inch az alapértelmezett nyomtató.
Példák végrehajtása a kód nyomdai grafika alább.
Nyomtatás raszteres képek
Nyomtatás raszteres kívánt képet, hogy töltse le a példánya a TBitmap vagy annak jogutódja. A legegyszerűbb módja, hogy használja az alkalmazást Timage alkatrész vagy hozzon létre magának egy objektum típusú TBitmap. A képet azután a vásznon nyomtató standard módszerekkel és TPrinter osztály biztosítja a nyomtatást.
Például nyomtatni egy képet a oldal közepén megváltoztatása nélkül a skála következők szerint kell végrehajtani:
eljárás TForml.ButtonlClick (Sender: TObject);
A nyomtató, Imagel do
if (Picture.Width> oldalnyi szélességű) vagy (Picture.Height> PageHeight), akkor kezdődik
ShowMessage (Nagyobb oldalak ');
Canvas.Draw ((oldalnyi szélességű - Picture.Width) div 2, (PageHeight - Picture.Height) div 2, Picture.Bitmap);
Ha a képet az oldalon, a Canvas módszer. Draw biztosítja a kimeneti kép az oldalon.
Mert nem arányos a képet az oldal mérete, megteheti:
eljárás TFormI.ButtonlClick (Sender: TObject);
var ImageRect: TRect;
A nyomtató, Imagel do
Ebben az esetben minden munkát skálázás módszerével végzi StretchDraw vászon, amely átméretezi a képet, hogy a méret a téglalap ImageRect.
Arányosan skála elvégzéséhez szükséges elemi számítások a számítás a mérete az oldalán a téglalap. Egy átfogó példa az ellátási Delphi: mappa heip \ példák \ jpeg.
Nyomtatás grafikus primitívek
Nyomtatás tetszőleges grafikus formák és szöveg a grafika lehető létrehozása nélkül a raszter kép, de közvetlenül a képességeit a tárgy tulajdonságait Canvas nyomtatót.
eljárás TFormI.ButtonlClick (Sender: TObject);
A Printer.Canvas do kezdődik Pen.Color: = clBlack;
R: = téglalap (10, 10, 160, 160);
Ellipszis (R.Left, R.Top, R.Right, R.Bottom);
TextOut (P.X, P.Y, 'ellipszis');
Ha ezt a kódot a nyomtatón kell nyomtatni kört az aláírás „Ellipse” alatta. Figyeljük meg, hogy ebben az esetben a szöveg a kép alatt nyomtattunk grafikus eszközök.
Az ingatlan osztály TPrinter vászon lehetővé teszi számunkra, hogy végre egy másik érdekes jellemzője: a tartalom a vászon vagy más vizuális komponens lehet nyomtatni anélkül, hogy túl sok gond.
Tegyük fel, hogy megjeleníti a geometrikus minta, ha rendering formák rá vásznon.
Ábra. 9.2.Geometrichesky alakzatrajzoló a vásznon
Létrehozásához és használja a tulajdonságait TCanvas osztály módszerek. Melléklet DemoPrintCanvas (ábra. 9.2), hogy hozzon létre egy képet a OnPaint felvezető módszer.
Listing 9.2Sektsiya végrehajtása a modul fő formája DemoPrintCanvas projekt
eljárás TMainForm.FormPaint (Sender: TObject);
Kezdjük a vászonképzővel Pen.Color: = clBlack;