Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-09-2012
ivantj ivantj is offline
Registrado
NULL
 
Registrado: feb 2011
Posts: 4
Poder: 0
ivantj Va por buen camino
Imprimir con TPrinter varias hojas

Hola que tal comunidad, queria exponer un problema que tengo con la impresion usando TPrinter, necesito imprimir los datos que me traigo de una consulta, lo cual si se hace, y usando el un while puedo imprimir varias lineas y logro imprimir todos los datos, el problema que tengo es que
las lineas de datos son variables, puedes ser 2, 3 o hasta 100 lineas por lo cual ocupo que al final de la hoja, imprima en otra y que en el pie de la pagina me muestre datos para que firmen, pero no se como contabilizar o hacer para que imprimir ciertas lineas y despues de un numero X de lineas, me ponga los datos para que firmen y continue en una segunda pagina, o tercera dependiendo la cantidad de registros, esa es mi duda.

Encontre un codigo dentro del foro y ya hice algunas pruebas pero no me sale, simple y sencillamente no he podido llenar con un for o while las lineas que me hacen falta para despues deplegar los datos en donde firmen no se si alguien haya tenido el mismo problema que me pueda ayudar, por que la verdad si lo ocupo, o si alguien me pudiera dar una idea, gracias
Cita:
procedure TfrmImprimirCheque.Button1Click(Sender: TObject);
var
r: TRect;
i: Integer;
begin
with Printer do
begin
r := Rect(200,200,(Pagewidth - 200),(PageHeight - 200));
BeginDoc;
Canvas.Brush.Style := bsClear;
for i := 0 to Memo1.Lines.Count do
Canvas.TextOut(200,200 + (i *
Canvas.TextHeight(Memo1.Lines.Strings[i])),
Memo1.Lines.Strings[i]);

Canvas.Brush.Color := clBlack;
Canvas.FrameRect(r);
EndDoc;
end;
end;
Este es el codigo con el que imprimo las lineas, pero no entiendo como apartir de un cierto numero de lineas, imprima los datos para que firmen y al final de la hoja, continue en otra nueva , de antemano gracias por la ayuda.
Responder Con Cita
  #2  
Antiguo 19-09-2012
ivantj ivantj is offline
Registrado
NULL
 
Registrado: feb 2011
Posts: 4
Poder: 0
ivantj Va por buen camino
Oh alguien que me pueda decir, la forma en como puedo contabilizar las lineas que contiene una hoja, para darme una idea de cuantas lineas tienen que pasar para ejecutar el codigo y enviar a una segunda hoja, espero me puedan ayudar
Responder Con Cita
  #3  
Antiguo 19-09-2012
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.473
Poder: 21
newtron Va camino a la fama
Hola.

Cuando usas un modo de impresión gráfico no existe el concepto de líneas, eso es imprimiendo en modo texto en impresoras matriciales.

Para solucionar tu problema debes de saber cuanto mide el documento en el que vas a imprimir (si es tamaño folio sería 210x297), después, partiendo de cero vas sumando la altura de lo que vas imprimiendo y cuando veas que el acumulado de lo que llevas impreso va a pasar el largo del documento menos un margen adecuado saltas de página.

Saludos
__________________
Be water my friend.
Responder Con Cita
  #4  
Antiguo 19-09-2012
ivantj ivantj is offline
Registrado
NULL
 
Registrado: feb 2011
Posts: 4
Poder: 0
ivantj Va por buen camino
ok gracias, pues si mira el tipo de documento es de tipo Carta, es una hoja tamanio carta, pero suponiendo que encuentro mas o menos cuantas lineas toma esa hoja, la pregunta es, en la opcion del Canvas.Textout(); como defino dentro apartir de cuantas lineas genero una hoja nueva, o apartir de cuantas lineas imprimo la parte de firmas y continuo en otra hoja, esa es la duda mas que nada, por que he buscado informacion pero no he encontrado nada, o mejor dicho algo que explique parte del codigo, ya que es la primera vez que me veo en la necesidad de imprimir sin un reporteador ya que son solo datos de una consulta y que no requiere tanta implementacion, por eso utilice mejor el Tprinter.

muchas gracias por la ayuda, y a ver si alguien ya ha pasado por esto y pudiera poner algun ejemplo de como hacerle,




Cita:
datos datos datos datos datos datos datos datos
datos datos datos datos datos datos datos datos
datos datos datos datos datos datos datos datos
datos datos datos datos datos datos datos datos
datos datos datos datos datos datos datos datos
datos datos datos datos datos datos datos datos

//Si me paso de un cierto numero de lineas,
//Imprimo las Firmas
---------- ----------- --------- -----------
nombre1 nombre2 nombre3 nombre4


//Continuar en otra hoja imprimiendo
datos datos datos datos datos datos datos datos
datos datos datos datos datos datos datos datos
datos datos datos datos datos datos datos datos
en si es lo que quiero, pero como repito, es una hoja tamanio carta, y quisiera saber como pasar a una nueva pagina si la cantidad de datos
es mayor que la hoja, y en dado caso de que los datos sean pocos, que las firmas salgan hasta el pie de pagina, hasta abajo, lo cual indica que tendria que llenar la hoja de espacios en blanco hasta llegar al pie de pagina para desplegar las firmas, no se si me explico bien o no , gracias de antemano si me pueden ayudar.
Responder Con Cita
  #5  
Antiguo 19-09-2012
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.473
Poder: 21
newtron Va camino a la fama
A ver....

Suponiendo que el documento tenga 210 de ancho por 148 de alto que sería la mitad de un A4 tendrías que hacer lo siguiente:

Te pongo una idea de cómo podrías hacerlo que deberás retocar (no lo he probado).

Código Delphi [-]
LongitudImpresa:=10; // Aquí vamos a almacenar el tamaño impreso del documento, dejamos un pequeño margen por arriba
for i := 0 to Memo1.Lines.Count do begin
          Canvas.TextOut(200,LongitudImpresa,Memo1.Lines.Strings[i]);
  LongitudImpresa:=LongitudImpresa+Micanvas.TextHeight(Memo1.Lines.Strings[i]);
  If LongitudImpresa>130 then begin  // Dejamos el margen inferior en blanco
    Printer.NewPage;
    LongitudImpresa:=10; // Saltamos de página y volvemos a inicializar la variable
  end;
end;

Espero que esto te sirva de algo
Saludos
__________________
Be water my friend.
Responder Con Cita
  #6  
Antiguo 19-09-2012
ivantj ivantj is offline
Registrado
NULL
 
Registrado: feb 2011
Posts: 4
Poder: 0
ivantj Va por buen camino
Muchas gracias Newtron, probare tu codigo, sorry si respondo hasta ahora pero ya era de madrugada cuando te respondi, ahorita probare tu codigo para imprimir directamente y hacer las pruebas, muchas gracias por la respuesta, y reporto los resultados.


yo estaba viendo el uso de tprinter pero por lineas de codigo, creo que no lei bien la respuesta por que ya veo que se trabaja segun la medida del documento a imprimir :S:S:S, muchas gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Imprimir con TPrinter joseprad Impresión 2 10-05-2011 20:43:17
imprimir varias hojas pronto7 Impresión 3 08-07-2010 23:12:32
Varias hojas en Quickreport darkone2k4 Impresión 8 30-04-2008 18:08:46
Imprimir en varias hojas gabyzava Impresión 5 18-08-2007 20:30:34
Imprimir varias páginas con TPrinter sin impresora multibandeja?? burasu Impresión 2 14-06-2005 08:40:09


La franja horaria es GMT +2. Ahora son las 19:15:02.


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
Copyright 1996-2007 Club Delphi