Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Ayuda con paginacion (https://www.clubdelphi.com/foros/showthread.php?t=26833)

warlordbl 04-11-2005 18:07:46

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; 

vtdeleon 04-11-2005 18:39:49

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?:D

andres1569 04-11-2005 20:07:33

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.


La franja horaria es GMT +2. Ahora son las 18:09:39.

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