HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Nem nyomtatható terület meghatározása


Példaprogram letöltése

7817 bájt


Adott egy A4-es nyomtató és egy A4-es lap. Minden nyomtatónál van egy olyan terület a lapszéleken, melyekre nem képes a nyomtató rajzolni, így az A4-es lapon felhasználható terület valójában néhány milliméterrel kisebb az A4-es méretnél. Ebben a példában azt tudakoljuk meg a rendszertől, hogy mekkora az a margó az adott nyomtatónál, melyre nem képes nyomtatni.

A lekérdezés több lépésből áll.
procedure TForm1.Button1Click(Sender: TObject);
…
Elsőként meghatározzuk, hogy az adott nyomtatónak mekkora a felbontása x és y irányban. Ezt a GetDeviceCaps függvény adja meg DPI-ben, vagyis, hogy egy inch hosszra hány pontot képes rajzolni az adott nyomtató.
  x:=GetDeviceCaps(Printer.Handle, LOGPIXELSX);
  y:=GetDeviceCaps(Printer.Handle, LOGPIXELSY);
Ezt követően lekérdezzük a nyomtató által kezelt lap fizikai szélességét és magasságát.
  w:=GetDeviceCaps(Printer.Handle, PHYSICALWIDTH);
  h:=GetDeviceCaps(Printer.Handle, PHYSICALHEIGHT);
Az értékeket átszámítjuk milliméterre és úgy jelenítjük meg. Ehhez fel kell használnunk a már meghatározott felbontását a nyomtatónak, valamint az inch-et is át kell számítanunk milliméterre.
  ListBox1.Items.Add(Format('Fizikai szélesség: %8.2f mm', [w*25.4/x]));
  ListBox1.Items.Add(Format('Fizikai magasság: %8.2f mm', [h*25.4/y]));
A nyomtatható terület szélességét és magasságát adja vissza számunkra a TPrinter osztály PageWidth és PageHeight property-je.
  ListBox1.Items.Add(Format('Lap szélesség: %8.2f mm', [Printer.PageWidth*25.4/x]));
  ListBox1.Items.Add(Format('Lap magasság: %8.2f mm', [Printer.PageHeight*25.4/y]));
A nem nyomtatható terület kezdő x és y koordinátája lekérdezhető szintén a GetDeviceCaps által, így már csak az marad hátra, hogy a fenti ismereteket felhasználva kiszámítsuk a nem nyomtatható terület jobb oldalát és alsó szélét.
  margin.Left:=GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX);
  margin.Top:=GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY);
A jobb oldal és az alsó szél távolságát az alábbi egyszerű kivonásokkal kapjuk.
  margin.Right:=w-margin.Left-Printer.PageWidth;
  margin.Bottom:=h-margin.Top-Printer.PageHeight;
Ezt követően már csak a nem nyomtatható terület méretének megjelenítése van szükség, miközben átszámítjuk azokat is milliméterre.
  ListBox1.Items.Add(Format('Bal margó: %8.2f mm', [margin.Left*25.4/x]));
  ListBox1.Items.Add(Format('Felso margó: %8.2f mm', [margin.Top*25.4/y]));
  ListBox1.Items.Add(Format('Jobb margó: %8.2f mm', [margin.Right*25.4/x]));
  ListBox1.Items.Add(Format('Alsó margó: %8.2f mm', [margin.Bottom*25.4/y]));





Cikksorozat

#IDKategóriaCikk címeSorozat
3916WindowsA javascript nyelv bemutatása1. rész
3946WindowsJavascript változók és operátorok2. rész
3975WindowsKódvezérlés JScript-ben3. rész
4004WindowsFüggvények és objektumok4. rész
4036WindowsFejlett funkciók a JavaScript nyelvben5. rész
4066WindowsFejlett funkciók a JavaScript nyelvben - folytatás6. rész
4116WindowsReguláris kifejezések7. rész
4145WindowsReguláris kifejezések - folytatás8. rész


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