Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   TPrinter en delphi (https://www.clubdelphi.com/foros/showthread.php?t=57774)

cmm07 27-06-2008 02:04:27

TPrinter en delphi
 
Hola, estoy y necesito imprimir directamente a las canvas de la impresora, yo ocupo la clase "Printers", pero tengo 2 problemillas:

esta intrccuion utilizo:

Código Delphi [-]
With printer do begin
BeginDoc;
Canvas.Draw(0, 0, MyGrapichs)
EndDoc;
end;

pero el primer problema es que al imprimir me sale demasiado pequeño algo muy diminuto, nose como darle los parametros para mas chico o mas grande, etc...mi segundo problema es que quiero que en la misma hoja se impriman por ejemplo 20 veces con espacios separados el mismo dibujo, no logro hacer eso...

gracias y espero que me puedan ayudar, ya que lo necesito lo más ante posible desde ya gracias....
54LU2

jconnor82 27-06-2008 05:40:38

Hola q tal....

Solo tendrias q escalar la imagen en el canvas de la impresora

Código Delphi [-]
  ...
  var
    ScaleX, ScaleY, L, W, H: Integer;
    R: TRect;
  begin
      ...
      with Printer do
      begin
        {Escala - El PixelsPerInch de la Impresora es distinto al q vez en el
         monitor, Form en este caso}
        ScaleX := GetDeviceCaps(Handle, logPixelsX) div Form1.PixelsPerInch;
        ScaleY := GetDeviceCaps(Handle, logPixelsY) div Form1.PixelsPerInch;

        {Nuevo tamaño - En este punto puedes variarlo, eso si hazlo sin 
        perder la relacion de la imagen original, multiplicando a H y W por la
        misma constante}
        H := MyGraphics.Height * ScaleY;
        W := MyGraphics.Width * ScaleX;

        {Si el ancho de la imagen pasa al del canvas de la impresora corrijo el
        el alto... no lo he puesto, pero, lo mismo seria con el alto}
        if Printer.PageWidth < W then
        begin
          H := MulDiv(H, Printer.PageWidth, W);
          W := Printer.PageWidth;
        end;

        {En este punto modificas la posicion en la q kieres q valla la imagen lo
        he puesto en la parte central en tu caso solo tendrias q iterar y variar
        la posicion de la imagen, tambien tendrias q mejorar la parte del
        StretchDraw, pero la idea es esa}
        L := (Printer.PageWidth - W) div 2;
        R := Rect(L, 0, L + W, 0 + H);
        PY := R.Bottom;
        Canvas.StretchDraw(R, bmLogo);
      end;

Espero y te sirva... nos vemos

cmm07 27-06-2008 12:47:47

gracias lo probare de ai te cuento mas gracias...

solo una duda mas, como puedo que en la misma hoja se impriman por ejemplo 20 veces separados el mismo dibujo, no logro hacer eso...

GRACIAS

54LU2

cmm07 27-06-2008 13:20:49

""hola, lo he probado y dice "Printer is not currently printing" cual peude ser el problema??""

Lo he solucionado me faltaba el BeginDoc y End Doc, pero si puedes contestame a la pregunta de arribita..XD

54LU2


La franja horaria es GMT +2. Ahora son las 11:28:35.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi