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 04-11-2005
warlordbl warlordbl is offline
Registrado
 
Registrado: nov 2005
Posts: 1
Poder: 0
warlordbl Va por buen camino
Ayuda con paginacion

Hola, tengo un problemilla
me estoy introducioendo en esto... aver si alguien me puede ayudar
Tengo este codigo y lo utilizo para imprimir el contenido de un listview
Me gustaria lo siguiente

- Imprimir las cabeceras del listview
- Imprimir varias paginas ya que solo me imprime la primera

Si alguien le pudiera hecahr un ojo y aclarar mis dudas (como si fuera pa tontos) os lo agradeceria
Código Delphi [-]
procedure TForm1.BitBtn7Click(Sender: TObject); 
var 
AuxStr,  columna1, columna2, columna3, columna4,columna5: string; 
Indice, I ,item,pagina,numero,huecos,numero1,numero2,numero3,numero4,numero5,contador: Integer; 
NumeroMaxLineas,NumeroMaxLineasAux: Integer; 
BEGIN 
with Printer do 
try 
  Application.ProcessMessages; 
  Screen.Cursor := crHourGlass; 
  BeginDoc; 
  Canvas.Font.Name := 'Courier New'; 
  Canvas.Font.Size := 10; 
  NumeroMaxLineas := PageHeight div (Canvas.TextHeight('M')); 
  NumeroMaxLineas := NumeroMaxLineas - 5; 
  I := 2; 
  AuxStr := 'LISTADO DE USUARIOS'; 
  Canvas.TextOut(0,I * (Canvas.TextHeight('M')), AuxStr); 
  I := I + 1; 
  AuxStr := '=============================================='; 
  Canvas.TextOut(0,I * (Canvas.TextHeight('M')), AuxStr); 
  I := I + 2; 

  for item := 0 to listview1.Items.Count - 1 do 
  begin 

    I := I + 1; 
    //Así sacas el valor del caption y los subitems de cada elemento 
    columna1 := listview1.Items[item].Caption; 
    columna2 := listview1.Items[item].SubItems[0]; 
    columna3 := listview1.Items[item].SubItems[1]; 
    columna4 := listview1.Items[item].SubItems[2]; 
    columna5 := listview1.Items[item].SubItems[3]; 

    columna2:=columna2 + ', ' + columna3; 

    numero1:= strlen(pchar(string(columna1))); 
    numero2:= strlen(pchar(string(columna2))); 
    numero3:= strlen(pchar(string(columna3))); 
    numero4:= strlen(pchar(string(columna4))); 
    numero5:= strlen(pchar(string(columna5))); 

    for contador:=0 to (3-numero1) do 
    begin 
      columna1:= columna1 + ' '; 
    end; 
    columna1:=columna1 + '- '; 
    for contador:=0 to (35-numero2) do 
    begin 
      columna2:= columna2 + ' '; 
    end; 
    for contador:=0 to (20-numero4) do 
    begin 
      columna4:= columna4 + ' '; 
    end; 
    for contador:=0 to (9-numero5) do 
    begin 
      columna5:= columna5 + ' '; 
    end; 

    AuxStr := columna1+columna2+columna4+columna5; 
    Canvas.TextOut(0,I * (Canvas.TextHeight('M')), AuxStr); 
end; 
  enddoc; 
  Screen.Cursor := crDefault; 
except 
on EPrinter do 
begin 
Screen.Cursor := crDefault; 
Application.MessageBox('Se produjo un error durante la impresión','Error', MB_ICONERROR or MB_OK); 
end; 
end; 
end; 

Última edición por vtdeleon fecha: 04-11-2005 a las 18:38:15. Razón: Etiqueta Delphi
Responder Con Cita
  #2  
Antiguo 04-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos
Bienvenido al ClubDelphi.

Aunque no aportare a tu duda, aportare un poco para la comunidad, diciendote que leas estos puntos: Guía de Estilo, Etiquetas vB:=Delphi-SQL

Pd:Ves la diferencia en tu codigo?
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #3  
Antiguo 04-11-2005
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 21
andres1569 Va por buen camino
Hola:

A modo de orientación te diré que para saber el título de las cabeceras te mires la propiedad Columns del TListView.

Y ya que tú mismo calculas el número de líneas que le caben a la página, solo tienes que llevar un contador de las líneas que llevas dibujadas (impresas) y cuando alcanzas dicho número llamas NewPage, reseteas a 0 dicho contador, y sigues dibujando lineas a partir de arriba del Canvas.
__________________
Guía de Estilo
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


La franja horaria es GMT +2. Ahora son las 00:06:21.


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