Pagina x de xx con Clase Tprinter

Pagina x de xx con Clase Tprinter

Postby dobfivewin » Tue Mar 03, 2009 4: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
dobfivewin
 
Posts: 325
Joined: Sun Feb 03, 2008 11:04 pm
Location: Argetnina

Re: Pagina x de xx con Clase Tprinter

Postby Carles » Tue Mar 03, 2009 7: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
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1095
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Re: Pagina x de xx con Clase Tprinter

Postby dobfivewin » 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
dobfivewin
 
Posts: 325
Joined: Sun Feb 03, 2008 11:04 pm
Location: Argetnina

Re: Pagina x de xx con Clase Tprinter

Postby FiveWiDi » 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: Select all  Expand view

*******************************************************************************
/* 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 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
FiveWiDi
 
Posts: 1064
Joined: Mon Oct 10, 2005 2:38 pm

Re: Pagina x de xx con Clase Tprinter

Postby dobfivewin » Wed Mar 04, 2009 8:50 am

Me da error en:

Code: Select all  Expand view
          UTILPRN ::oUtil nEndLine +.5,nEndCol SAY "Hoja " +;
                    Alltrim( Str( x ) ) +" de " + Alltrim( Str( nFilesLong ) ) ;
                    FONT ::oFnt5
dobfivewin
 
Posts: 325
Joined: Sun Feb 03, 2008 11:04 pm
Location: Argetnina

Re: Pagina x de xx con Clase Tprinter

Postby FranciscoA » 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: Select all  Expand view
//---------------------------------------------
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
User avatar
FranciscoA
 
Posts: 2111
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Pagina x de xx con Clase Tprinter

Postby dobfivewin » Thu Mar 05, 2009 7: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
dobfivewin
 
Posts: 325
Joined: Sun Feb 03, 2008 11:04 pm
Location: Argetnina


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 7 guests