=========
1er. PRG
=========
#include "AMPA32.ch"
/* *************************************************************************
Per a imprimir codi de barres EAN13
********************************************************************** */
FUNCTION ImprCoba( AmpaArra )
Local nCodBar13Ini := 0
Local nCodBar13Fin := 0
Local nEtiqLini := 6
Local nEtiqCOLU := 12
If MsgGet( "CODI DE BARRES INICIAL", "Indiqui el número INICIAL de codi de barres a imprimir:", @nCodBar13Ini, Nil, Nil )
If MsgGet( "CODI DE BARRES FINAL", "Indiqui el número FINAL de codi de barres a imprimir:", @nCodBar13Fin, Nil, Nil )
If MsgGet( "Nombre d'etiquetes per LÍNIA", "Indiqui nombre d'etiquetes per LÍNIA:", @nEtiqLini, Nil, Nil )
If MsgGet( "Nombre d'etiquetes per COLUMNA", "Indiqui nombre d'etiquetes per COLUMNA:", @nEtiqCOLU, Nil, Nil )
TImpCoBa():New( AMPAArra, nCodBar13Ini, nCodBar13Fin, nEtiqLini, nEtiqCOLU )
EndIf
EndIf
EndIf
EndIf
Return Nil
/* *************************************************************************
/* *************************************************************************
Per a imprimir codi de barres CODE128
********************************************************************** */
FUNCTION ImprCobaAlum( AmpaArra )
Local aFiltro := aFiltroFun( AMPAARRA )
Local nEtiqLini := 4
Local nEtiqCOLU := 12
Local nEtiqAlum := 1
Local aOrden := aOrdenFun( AMPAARRA )
aOrden[2] := 4
aFiltro := Filtro01( AMPAarra, AMPAarra[1][1][2][1][1], "ALUMNE", Nil, Nil, .F., aFiltro, .F. )
If aFiltro[1] = 1
aOrden := Orden01( AMPAARRA, AMPAarra[1][1][2][1][1], "ALUMNE", Nil, .F., aOrden )
If aOrden[3]
If MsgGet( "Nombre d'etiquetes per LÍNIA", "Indiqui nombre d'etiquetes per LÍNIA:", @nEtiqLini, Nil, Nil )
If MsgGet( "Nombre d'etiquetes per COLUMNA", "Indiqui nombre d'etiquetes per COLUMNA:", @nEtiqCOLU, Nil, Nil )
If MsgGet( "Nombre d'etiquetes per ALUMNE", "Indiqui nombre d'etiquetes per ALUMNE:", @nEtiqAlum, Nil, Nil )
TImpCoBaAlum():New( AMPAArra, nEtiqLini, nEtiqCOLU, nEtiqAlum, aFiltro, aOrden )
EndIf
EndIf
EndIf
EndIf
EndIf
Return Nil
/* ********************************************************************** */
========
2do. PRG
========
#include "AMPA32.ch"
//#INCLUDE "Fivewin.CH"
#INCLUDE "Utilprn.CH"
#INCLUDE "Barcode.CH"
#DEFINE CLR_GREY 14671839
************************************************************************
************************************************************************
************************************************************************
*Clase para realizar unas etiquetas
*Haciendo uso de la Clausula NOBOX.
CLASS TIMPCOBA FROM TIMPRIME
CLASSDATA lRegistered AS LOGICAL
DATA lprevisual
DATA ARRAAMPA
DATA nContadora
// Methods constructores
//METHOD Init( cSpool)
METHOD New( AMPAARRA, nCodBar13Ini, nCodBar13Fin, netiqlini, netiqfila ) CONSTRUCTOR
METHOD Etiqueta()
METHOD InitLineFile() INLINE ( ::nLinea := 0, ::nFila := 0 )
METHOD Separator() // Este method es compartido por las dos clases
ENDCLASS
METHOD New( AMPAARRA, nCodBar13Ini, nCodBar13Fin, netiqlini, netiqfila ) CLASS TIMPCOBA
::ARRAAMPA := AMPAARRA
/* Es solicita si es desitja previsualitzar.
--------------------------------------*/
::lprevisual := MsgNoYes( "Es desitja previsualitzar?", "Atenció!" )
traza( 1, "::lPrevisual=", ::lprevisual )
msgnowait2( AMPAARRA, "Imprimint ...", "Cancel·lar...")
CursorWait()
/* Inicia el proceso de impresión
--------------------------- */
IMPRIME INIT "Impressió EAN13 entre " + AllTrim( Str( nCodBar13Ini, 15, 0 ) ) + " i " + AllTrim( Str( nCodBar13Fin, 15, 0 ) )
PAGE
::Etiqueta( nCodBar13Ini, nCodBar13Fin, netiqlini, netiqfila )
ENDPAGE
//TRAZA(1, "::oPrn:nVertRes()=", ::oPrn:nVertRes() )
//TRAZA(1, "::oPrn:nHORZRes()=", ::oPrn:nHORZRes() )
//TRAZA(1, "::oPrn:nVertSIZE()=", ::oPrn:nVertSIZE() )
//TRAZA(1, "::oPrn:nHORZSIZE()=", ::oPrn:nHORZSIZE() )
//TRAZA(1, "::oPrn:GetPhySize()[1]=", ::oPrn:GetPhySize()[1] )
//TRAZA(1, "::oPrn:GetPhySize()[2]=", ::oPrn:GetPhySize()[2] )
IMPRIME END .F.
CursorArrow()
EndMsgNoWait( ::ARRAAMPA )
Return .T.
METHOD Etiqueta( nCodBar13Ini, nCodBar13Fin, netiqlini, netiqfila ) CLASS TIMPCOBA
Local nContador := 0
Local nFlag := 1
Local nVertSIZE := 0
Local nHORZSIZE := 0
Local cCode := ""
nVertSIZE := Val(Str( ::oPrn:GetPhySize()[2] / 10, 4, 1 ) )
nHORZSIZE := Val(Str( ::oPrn:GetPhySize()[1] / 10, 4, 1 ) )
TRAZA(1, "nVertSIZE=", nVertSIZE )
TRAZA(1, "nHORZSIZE=", nHORZSIZE )
::InitLineFile()
For nContador := nCodBar13Ini To nCodBar13Fin STEP 1
// Usando BARLIB de Cayetano.
// Para no tener que retocar el .CH ni historia solamente tendremos que
// pasar en vez de nCol como hasta ahora , hacerlo asi, ::oUtil:Row( nRow ), donde nRow
// sera un valor expresado en CMS.
/* Si los márgenes son '0':
::oPrn:nVertSIZE()=297 MILIMETROS !!!
::oPrn:nHORZSIZE()=210
*/
//@ ::oUtil:Row( ::nLinea + 1.5 ), ::oUtil:Col( ::nFila - 1 ) EAN13 Right("000000000000" + AllTrim(Str( nContador, 12, 0) ), 12) ;
// OF ::oUtil:oPrinter SIZE 1 BANNER
//@ ::oUtil:Row( ::nLinea + 3 ), ::oUtil:Col( ::nFila - 1 ) CODE128 "LOLES REBALE 8E PRIMARIA" MODE "A" ;
// OF ::oUtil:oPrinter SIZE 1
//@ ::oUtil:Row( ::nLinea + ( (::oPrn:nVertSIZE()/10) / nEtiqFila ) - 1.5 - 0.5 ), ::oUtil:Col( ::nFila + 0.5 ) EAN13 Right("000000000000" + AllTrim(Str( nContador, 12, 0) ), 12) ;
// OF ::oUtil:oPrinter SIZE 1 BANNER
cCode := Right("00000000000" + AllTrim(Str( nContador, 11, 0) ), 11) + cGetDigitMatr( ::ARRAAMPA, Right("00000000000" + AllTrim(Str( nContador, 11, 0) ), 11) )
@ ::oUtil:Row( ::nLinea + ( nVertSIZE / nEtiqFila ) - 1.5 - 0.5 ), ::oUtil:Col( ::nFila + 0.5 ) EAN13 cCode ;
OF ::oUtil:oPrinter SIZE 1 BANNER
//::nFila := ( (::oPrn:nHORZSIZE()/10) / nEtiqLini ) * nFlag
::nFila := ( nHORZSIZE / nEtiqLini ) * nFlag
nFlag++
if nFlag = (nEtiqLini + 1 )
ISEPARATOR ( nVertSIZE / nEtiqFila )
nFlag := 1
::nFila := 0
endif
EndFor
::oUtil:Reset() //Valores por defecto
RETURN NIL
METHOD Separator( nSpace ) CLASS TIMPCOBA
// Si habido un salto de pagina despues de una linea de separacion
if Super:Separator( nSpace ) // Atentos. Llamada a la TImprime.
::InitLineFile()
endif
Return Self
************************************************************************
************************************************************************
CLASS TIMPCOBAALUM FROM TIMPRIME
CLASSDATA lRegistered AS LOGICAL
DATA lprevisual
DATA ARRAAMPA
DATA nContadora
// Methods constructores
//METHOD Init( cSpool)
METHOD New( AMPAARRA, netiqlini, netiqfila, nEtiqAlum, aFiltro, aOrden ) CONSTRUCTOR
METHOD Etiqueta( nEtiqlini, nEtiqfila, nEtiqAlum, aFiltro, aOrden )
METHOD InitLineFile() INLINE ( ::nLinea := 0, ::nFila := 0 )
METHOD Separator() // Este method es compartido por las dos clases
ENDCLASS
METHOD New( AMPAARRA, nEtiqlini, nEtiqfila, nEtiqAlum, aFiltro, aOrden ) CLASS TIMPCOBAALUM
::ARRAAMPA := AMPAARRA
/* Es solicita si es desitja previsualitzar.
--------------------------------------*/
::lprevisual := MsgNoYes( "Es desitja previsualitzar?", "Atenció!" )
traza( 1, "::lPrevisual=", ::lprevisual )
msgnowait2( AMPAARRA, "Imprimint ...", "Cancel·lar...")
CursorWait()
/* Inicia el proceso de impresión
--------------------------- */
IMPRIME INIT "Impressió CODE128 d'alumnes " + aFiltro[2]
PAGE
::Etiqueta( nEtiqlini, nEtiqfila, nEtiqAlum, aFiltro, aOrden )
ENDPAGE
//TRAZA(1, "::oPrn:nVertRes()=", ::oPrn:nVertRes() )
//TRAZA(1, "::oPrn:nHORZRes()=", ::oPrn:nHORZRes() )
TRAZA(1, "::oPrn:nVertSIZE()=", ::oPrn:nVertSIZE() )
TRAZA(1, "::oPrn:nHORZSIZE()=", ::oPrn:nHORZSIZE() )
TRAZA(1, "::oPrn:GetPhySize()[1]=", ::oPrn:GetPhySize()[1] )
TRAZA(1, "::oPrn:GetPhySize()[2]=", ::oPrn:GetPhySize()[2] )
IMPRIME END .F.
CursorArrow()
EndMsgNoWait( ::ARRAAMPA )
Return .T.
METHOD Etiqueta( nEtiqlini, nEtiqfila, nEtiqAlum, aFiltro, aOrden ) CLASS TIMPCOBAALUM
Local nContadora := 0
Local nFlag := 1
Local nVertSIZE := 0
Local nHORZSIZE := 0
Local oTdbfAlumne := Nil
Local lRest := .F.
Local oFnt_8 := Nil
DEFINE FONT oFnt_8 NAME "Arial" SIZE 0,-8 OF ::oPrn
oTdbfAlumne := oDbfClon( ::ArraAMPA, "ALUMNE" )
oTdbfAlumne:SetIndex( aOrden[ 2 ] )
nVertSIZE := Val(Str( ::oPrn:GetPhySize()[2] / 10, 4, 1 ) )
nHORZSIZE := Val(Str( ::oPrn:GetPhySize()[1] / 10, 4, 1 ) )
TRAZA(1, "nVertSIZE=", nVertSIZE )
TRAZA(1, "nHORZSIZE=", nHORZSIZE )
::InitLineFile()
While oTDbfAlumne:Locate( bCodiFil( ::ArraAMPA, aFiltro[3] ), , lRest ) // .and. ValType( ::ArraAMPA[1][1][1] ) = "O"
lRest := .T.
oTdbfalumne:Load()
For nContadora := 1 To nEtiqalum STEP 1
// Usando BARLIB de Cayetano.
// Para no tener que retocar el .CH ni historia solamente tendremos que
// pasar en vez de nCol como hasta ahora , hacerlo asi, ::oUtil:Row( nRow ), donde nRow
// sera un valor expresado en CMS.
/* Si los márgenes son '0':
::oPrn:nVertSIZE()=297 MILIMETROS !!!
::oPrn:nHORZSIZE()=210
*/
@ ::oUtil:Row( ::nLinea + ( nVertSIZE / nEtiqFila ) - 1.5 - 0.6 ), ::oUtil:Col( ::nFila + 0.5 ) ;
CODE128 ;
Left( AllTrim( oTdbfalumne:CodiAlum ) + Space(12), 12 ) ;
MODE "A" OF ::oUtil:oPrinter SIZE 1
::oUtil:Text( ;
AlLTrim(oTdbfalumne:CodCurAc) + " / " + AlLTrim(oTdbfalumne:CodiAlum), ;
::nLinea + ( nVertSIZE / nEtiqFila ) - 0 - 1.1, ;
::nFila + 0.5, ;
oFnt_8, ;
Nil, Nil, ;
Nil, Nil, Nil, Nil, Nil, Nil, Nil )
::oUtil:Text( ;
AlLTrim(oTDbfAlumne:nomAlum) + " " + AlLTrim(oTDbfAlumne:cognom1) + " " + AlLtrim(oTDbfAlumne:cognom2), ;
::nLinea + ( nVertSIZE / nEtiqFila ) - 0 - 0.7, ;
::nFila + 0.5, ;
oFnt_8, ;
Nil, Nil, ;
Nil, Nil, Nil, Nil, Nil, Nil, Nil )
/*
UTILPRN ::oUtil 3, ( ::nFila + 0.5 ) SAY ;
AlLTrim(oTdbfalumne:CodCurAc) + "-" + AlLTrim(oTdbfalumne:CodiAlum) + "-" + ;
AlLTrim(oTDbfAlumne:nomAlum) + " " + AlLTrim(oTDbfAlumne:cognom1) + " " + AlLtrim(oTDbfAlumne:cognom2)
UTILPRN ::oUtil (::nLinea + ( nVertSIZE / nEtiqFila ) - 0 - 0.5 ), ;
( ::nFila + 0.5 ) SAY ;
AlLTrim(oTdbfalumne:CodCurAc) + "-" + AlLTrim(oTdbfalumne:CodiAlum) + "-" + ;
AlLTrim(oTDbfAlumne:nomAlum) + " " + AlLTrim(oTDbfAlumne:cognom1) + " " + AlLtrim(oTDbfAlumne:cognom2)
*/
::nFila := ( nHORZSIZE / nEtiqLini ) * nFlag
nFlag++
if nFlag = (nEtiqLini + 1 )
ISEPARATOR ( nVertSIZE / nEtiqFila )
nFlag := 1
::nFila := 0
endif
EndFor
EndDo
::oUtil:Reset() //Valores por defecto
laTDbfEnd( ::ArraAMPA, { oTdbfAlumne } )
oFnt_8:End()
RETURN NIL
METHOD Separator( nSpace ) CLASS TIMPCOBAALUM
// Si habido un salto de pagina despues de una linea de separacion
if Super:Separator( nSpace ) // Atentos. Llamada a la TImprime.
::InitLineFile()
endif
Return Self
*************************************