FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Pagina x de xx con Clase Tprinter
Posts: 325
Joined: Sun Feb 03, 2008 11:04 PM
Pagina x de xx con Clase Tprinter
Posted: Tue Mar 03, 2009 04:22 PM

Estimados

Es posible con la Clase Tprinter luego de haber realizado PageEnd(), realizar alg{un ajuste en la p{agina anterior?

El tema es que tengo que colocar el Número de pagina y la cantidad de pagina del documento.

La cantidad de paginas final no la tengo hasta que no termine de IMprimir

muchas gracias

david
argentina

Posts: 1283
Joined: Fri Feb 10, 2006 02:34 PM
Re: Pagina x de xx con Clase Tprinter
Posted: Tue Mar 03, 2009 07:02 PM

David,

La técnica es una vez has finalizado la ultima pagina, contar el numero de ficheros metafile -> Len( ::aMeta )

Luego haces un loop desde la primera hasta la ultima, cargando el wmf ::ImportWMF() i imprimiendo "Pagina " + nI + " de " Len(::aMeta)

No se si me explicado.

Salutacions.
C.

Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
HIX -> https://github.com/carles9000/hix
Posts: 325
Joined: Sun Feb 03, 2008 11:04 PM
Re: Pagina x de xx con Clase Tprinter
Posted: Tue Mar 03, 2009 10:02 PM

Ante todo muchas gracias por tu respuesta.

La verdad que no entendí el tema de los comando que usas,

si no es molestias de publicar y pasarme un ejemplo...

muchas gracias

david
argentina

Posts: 1446
Joined: Mon Oct 10, 2005 02:38 PM
Re: Pagina x de xx con Clase Tprinter
Posted: Tue Mar 03, 2009 11:27 PM
dobfivewin wrote:Ante todo muchas gracias por tu respuesta.

La verdad que no entendí el tema de los comando que usas,

si no es molestias de publicar y pasarme un ejemplo...

muchas gracias

david
argentina


Lo que te comenta Carles es lo que usa The Full en su clase TImprime:

Code (fw): Select all Collapse
*******************************************************************************
/* Un truquete para poner el pie de hoja el famoso
   1 de x , 2 de x etc..

   Como siempre by TheFull
   Lo bueno de este sistema es que no se vuelve a generar
   las hojas otra vez  */
*******************************************************************************
METHOD PageCount( )  CLASS TIMPRIME
       Local x
       Local nFilesLong := Len( ::oPrn:aMeta )
       Local aFicheros  := ::oPrn:aMeta
       Local nHojas := nFilesLong
       Local nCount := 1
       Local nEndCol := ::oPrn:nHorzSiZe() / 10 - 2 // En Cms
       Local nEndLine := ::oPrn:nVertSiZe() / 10 - 1 // En Cms

       if nFilesLong <= 1  // Solamente una pagina, Si hay copia son X Copias
          Return Nil
       endif

       ::oPrn:aMeta := {}   // Ya te has quedao , por chulo, sin ficheros XD

       FOR x := 1 TO  nFilesLong
         PAGE
           ::oPrn:ImportWMF( aFicheros[ x ], .F.  )
            UTILPRN ::oUtil nEndLine +.5,nEndCol SAY "Hoja " +;
                    Alltrim( Str( x ) ) +" de " + Alltrim( Str( nFilesLong ) ) ;
                    FONT ::oFnt5
         ENDPAGE
       NEXT

Return NIl


Un Saludo
Carlos G.

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 325
Joined: Sun Feb 03, 2008 11:04 PM
Re: Pagina x de xx con Clase Tprinter
Posted: Wed Mar 04, 2009 08:50 AM
Me da error en:

Code (fw): Select all Collapse
           UTILPRN ::oUtil nEndLine +.5,nEndCol SAY "Hoja " +;
                    Alltrim( Str( x ) ) +" de " + Alltrim( Str( nFilesLong ) ) ;
                    FONT ::oFnt5
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Pagina x de xx con Clase Tprinter
Posted: Wed Mar 04, 2009 12:59 PM
Hola David. La siguiente es una funcion que hice basada en el method PageCount() de la classe TImprime() por The Full.
Pruébala y me avisas.

Ejemplo;
PRINT oPrn NAME "hola" PREVIEW //FROM USER
oPrn:SetPortrait() //vertical
DEFINE FONT oFont1 NAME "Arial" SIZE 0, -08 OF oPrn BOLD
DEFINE FONT oFont2 NAME "Arial" SIZE 0, -10 OF oPrn
nRowStep := oPrn:nVertRes() / 66 // LINEAS
nColStep := oPrn:nHorzRes() / 80 // COLUMNAS

While !eof()
PAGE
nRow:=nRowStep*8
oPrn:Say( nRow, nColCentro, "xxxxx", oFont1,,,,PAD_CENTER )
nRow+= nRowStep*4
oPrn:Say( nRow, nCol2, "wwwwwwwwwwwwwwww",oFont2,,,,PAD_LEFT )
etc,etc,etc
ENDPAGE
(cAlias)->(dbSkip())
Enddo

NumeraPag(oPrn,oFont2,nRowStep,nColStep)

oFont1:End()
oFont2:End()
ENDPRINT

(cAlias)->(dbCloseArea())
return nil

Code (fw): Select all Collapse
//---------------------------------------------
Function NumeraPag(oPrn,oFont2,nRowStep,nColStep)
Local x
Local nPaginas := Len( oPrn:aMeta )
Local aFicheros := oPrn:aMeta
Local nCol := 70*nColStep      //colocalo donde prefieras
Local nLin := 64*nRowStep    //   ""

if nPaginas <= 1 // Solamente una pagina
  Return Nil
endif

oPrn:aMeta := {} 

FOR x := 1 TO nPaginas
 PAGE
   oPrn:ImportWMF( aFicheros[ x ], .F. )
   oPrn:Say( nLin,nCol, +Alltrim( Str( x ) ) +"/" + Alltrim( Str( nPaginas ) ) , oFont2,,,,PAD_RIGHT )
 ENDPAGE
NEXT

Return NIl


Saludos
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 325
Joined: Sun Feb 03, 2008 11:04 PM
Re: Pagina x de xx con Clase Tprinter
Posted: Thu Mar 05, 2009 07:52 AM

Estimados Francisco

Te agradezco por tu ayuda, hice uno pequeños ajustes a tu aporte y sale perfecto, muchas gracias. Tambien a Carlos y fivewidi.

Solo me está faltando solucionar el tema de la Justificacion completa al imprimir y listo....

Saludos

david
argentina

Continue the discussion