> 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);