[ jhondoe @ 15.08.2006. 11:06 ] @

Pomoć molim. koji je najjednostavniji način za printanje labela na neki obrazac npr. svjedodžbu.
Dosad sam radio sa "printer.Canvas.TextOut(400,300,label1.caption);", ali na printerima različite kvalitete printe na različitim položajima.
kako da postignem da na svim printerima ispisuje labele na istom mjestu tj. neovisno o kvaliteti printera??
[ qwertzuiopasdfghjkl @ 15.08.2006. 11:45 ] @
Mozes lijepo preko apija, imas par fja za to.. pribavis DC printera (device context) i lijepo slazes po njemu..
[ savkic @ 15.08.2006. 21:37 ] @
> Pomoć molim. koji je najjednostavniji način za printanje labela na neki obrazac npr. svjedodžbu.
> Dosad sam radio sa "printer.Canvas.TextOut(400,300,label1.caption);", ali na printerima različite kvalitete printe na različitim položajima.
> kako da postignem da na svim printerima ispisuje labele na istom mjestu tj. neovisno o kvaliteti printera??

Razlog je rezolucija štampača. Pre štampanja moraš saznati rezoluciju štampača pomoću GetDeviceCaps funkcije, npr.
Code:

  // Pronalazimo rezoluciju u dpi (tackama po incu)
  PrinterRes.x := GetDeviceCaps(Printer.Handle, LOGPIXELSX);
  PrinterRes.y := GetDeviceCaps(Printer.Handle, LOGPIXELSY);

  // Rezolucija u milimetrima
  HorResolution := FPrinterRes.x / 254 * 10;
  VerResoulution := FPrinterRes.y / 254 * 10;  


Dalje je lako, pomnožiš poziciju teksta u mm sa gore dobijenom rezolucijom u mm a dobijenu poziciju u pikselima posle regularno koristiš u funkcijama za štampanje teksta.

Za slučaj da ti zatreba i nonprintable area štampača:

Code:

  PrintOrigin.X := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX);
  PrintOrigin.Y := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY);  



[ Bojan Kopanja @ 16.08.2006. 11:59 ] @
A zasto se uopste patis sa stampanjem tako kako vec stampas? Uzmi lepo neki report engine tipa QuickReport ili RaveReport zavisno od verzije Delphija koju koristis i lepo slozis vizuelno kako ces da ti izgleda stranica koju stampas i gotovo, nema gledanja koji je printer i koja mu je rezolucija vec ce ti se to kako namestis uvek stampati isto...
[ qwertzuiopasdfghjkl @ 18.08.2006. 09:28 ] @
Ja sam uvijek za sto manje koristenje tudjih komponenata i engineova.. ne govorim da opet treba izmisljat toplu vodu, al BDS je sa VCL-om sam po sebi zeznut jer je prelagan za koristenje i onda svi odmah umisle da znaju programirat jer rade dosta programa za cas posla... a onda kad predju na C++ i cist WinAPI.. onda se malo useru
[ Bojan Kopanja @ 18.08.2006. 11:20 ] @
Ne vidim nikakav razlog za zagorcavanje zivota samom sebi... Zasto ne bih koristio ono sto je puno lakse za koriscenje i uradio relativno brzo neki program od kojeg mogu lepo da zivim umesto da se zezam sa WinAPI-jem i da 100 godina jurim bagove posto nista "ne vidim". A ako budem prelazio na C++ preci cu opet na Borlandovu varijantu pa ce mi biti isto kao i sa Delphijem ...