FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour oPrn:SETSIZE() no me funciona
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
oPrn:SETSIZE() no me funciona
Posted: Wed May 09, 2007 12:49 AM

Amigos:

Necesito imprimir etiquetas con código de barras, el tamaño de la etiqueta es de 6.5 cms de ancho por 2.5 cms de alto.

Cómo puedo indicarle a la clase TPrinter este pequeño tamaño ????

He probado con oPrn:SetSize pero no funciona.

Saludos, Armando

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 428
Joined: Thu Oct 19, 2006 12:28 PM
oPrn:SETSIZE() no me funciona
Posted: Wed May 09, 2007 06:59 AM

Hola Armando

Si utilizas Barlib, por ejemplo para Ean13 es así
@ nLIz, nCIz ean13 ccodigo width npix size nlongi of oPrn banner

y los códigos de barra yo los he generado de 1 cm x 1 cm.
mira éste programa que hice hace mucho tiempo y juega con las medidas:

http://hyperupload.com/download/029f9c3 ... S.ZIP.html

Saludos

Jose Luis

--------------------------

Saludos



Jose Luis
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
oPrn:SETSIZE() no me funciona
Posted: Wed May 09, 2007 01:19 PM

José Luis:

Muy bonito programa, te agradezco el interes.

Efectivamente estoy usando la excelente LIB de Cayetano y el problema que tengo no radica en especificar el tamaño del código de barras sino el tamaño de la etiqueta para que TPRinter salte al inicio de la siguiente despues de imprimir una, por cierto la impresora donde se usará es una ZEBRA que utiliza etiquetas en rollo.

Saludos y nuevamente gracias por tu respuesta

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 428
Joined: Thu Oct 19, 2006 12:28 PM
oPrn:SETSIZE() no me funciona
Posted: Wed May 09, 2007 04:56 PM

Armando
Como podrás comprobar en el programa, hay unos get para el tamaño de la etiqueta y otros para el tamaño de las barras.
Bien, pues el tamaño que pudes poner es en cm. y admite cualquier tamaño, puedes poner por ejemplo tamaño de la etiqueta Alto 6.5 cm, Ancho 1.5 cm, le pones en grueso de la barra 0.02, y el alto de la barra 1, y te hace las etiquetas que le digas, o que tengas en una BD con esas dimensiones, indicándole los desplazamientos tras cada etiqueta y los margenes superior e inferior.
Esto es para ccualquier impresora que utilize por ejemplo Din A4, ahora si me dices que es una zebra, pues ya me pierdo un poco, aunque buscando en el foro, encontré ésto

http://fivetechsoft.com/forums/viewtopi ... ight=zebra

Ahí viene un código compatible con ELTRON/ZEBRA

A ver si te sirve

Saludos

Jose Luis

--------------------------

Saludos



Jose Luis
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
oPrn:SETSIZE() no me funciona
Posted: Thu May 10, 2007 03:35 AM

José Luis:

Muchas gracias por el apoyo, voy entendiendo.

Solo un par de preguntas más, que clase usas para la impresión, TDosPrn, TPrinter, TReport ?, podrías mostrar tu código de impresión ?

Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 428
Joined: Thu Oct 19, 2006 12:28 PM
oPrn:SETSIZE() no me funciona
Posted: Thu May 10, 2007 06:48 AM

Voy a buscar...

Como te dije es un programa muy antiguo, y hecho un poco para uso personal, por lo tanto sin florituras, y como funciona, pues no me preocupé de cambiar nada.

Saludos

Jose Luis

--------------------------

Saludos



Jose Luis
Posts: 428
Joined: Thu Oct 19, 2006 12:28 PM
oPrn:SETSIZE() no me funciona
Posted: Thu May 10, 2007 12:46 PM
Aqui está
*+±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
*+
*+    Function codigo()
*+
*+    Called from ( barras.prg	 )   1 - function main()
*+
*+±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
*+
function codigo( tipo, lprime, cprime, nancho, nlargo, ncodigo, ncanti, nOpci1, nlongi, npix, lini, cini, nnufo, npre, nDespH, nDespV, lPvp, lRef, lDen, nDesPvp, nDesRef, nDesDen, lBanner, cRef, cDetalle,tipo128 )
// ************************************************************************************************************************************************

local oPrn
local ccodigo
local llprime
local ccprime
local pasada  := 1
local texto
local textoc
local textor
local npvp
local echo    := 1
local nufo    := nnufo
local oFont
local oFont1
local Conta   :=0
local nindice:=tempo->(Recno())
private nLIz
private nCIz
private nLIzpvp
private nCIzpvp
private nLIzRef
private nCIzRef
private nLIzDes
private nCIzDes
  if nOpci1=1
tempo->( dbSetfILTER( {|| tempo->selec=.T.},'tempo->selec=.T.') )
tempo->(dbgotop())
  endif
printer oPrn from user preview
oPrn:SetPage(9)
if nufo != nil
   DEFINE FONT oFont NAME( nufo[ 14 ] ) ;
			   SIZE 0, ( nufo[ 1 ] ) of oPrn
   DEFINE FONT oFont1 NAME( nufo[ 14 ] ) ;
			    SIZE 0, ( nufo[ 1 ] ) of oPrn
else
   DEFINE FONT oFont  NAME "Arial" SIZE 0,  8 OF oPrn
   DEFINE FONT oFont1 NAME "Arial" SIZE 0, 10 OF oPrn
endif
  if nOpci1=2
   npvp := alltrim( transform( npre, "@E 9,999.99" ) )
     if tipo = 6
        ncodigo := 'A' + alltrim( ncodigo ) + 'T'
     endif
  endif
ccodigo:=alltrim(ncodigo)
do while .t.
   page
   if pasada = 1
      llprime := lini
      ccprime := cini
   else
      llprime := lprime
      ccprime := cprime
   endif
   texto   := llprime - .27
   textor  := llprime - .6
   textoc  := llprime + nlongi

   do while llprime + nlargo <= 29.7
     CmtToPixel(llprime+nDespV,         ccprime+nDespH, oPrn )
     CmtToPvp  (texto+nDespV,           ccprime+nDespH+nDespvp ,oPrn)
     CmtToRef  (texto+nlongi+ndesPV+.3, ccprime+nDespH+ndesRef, oPrn)
     CmtToDes  (texto+nlongi+ndesPV+.5, ccprime+nDespH+ndesDen, oPrn)
      if nOpci1=1
          ccodigo := alltrim(tempo->codigo)
          ncanti  := tempo->cant
          npvp    := alltrim( transform( tempo->Pvp , "@E 99,999.99" ) )
          cRef    := alltrim(tempo->referencia)
	        cDetalle:=tempo->articulo
           if tipo = 6
              ccodigo := 'A' + alltrim( ccodigo ) + 'T'
           endif
       endif
      do case
	case tipo = 1
	  if lBanner
	    @ nLIz, nCIz ean13 ccodigo width npix size nlongi of oPrn banner
	  else
	    @ nLIz, nCIz ean13 ccodigo width npix size nlongi of oPrn
	  endif
	  if lPvp
	    oPrn:Say( nLIzpvp, nCIzpvp,'PVP '+npvp+' '+ ' €.', ofont )
	  endif
// como el codigo es lo mismo que la referencia, he quitado la referencia
	  if lRef
	    oPrn:Say( nLIzref, nCIzref,cRef, ofont )
	  endif
	  if lDen
	    oPrn:Say( nLIzdes, nCIzdes,OemToAnsi(rtrim(cDetalle)), ofont )
	  endif
	case tipo = 2
	  if lBanner
	    @ nLIz, nCIz ean8 ccodigo width npix size nlongi of oPrn BANNER
	  else
	    @ nLIz, nCIz ean8 ccodigo width npix size nlongi of oPrn
	  endif
	  if lPvp
	    oPrn:Say( nLIzpvp, nCIzpvp,'PVP '+npvp+' '+ ' €.', ofont )
	  endif
	  if lRef
	    oPrn:Say( nLIzref, nCIzref,cRef, ofont )
	  endif
	  if lDen
	    oPrn:Say( nLIzdes, nCIzdes,OemToAnsi(rtrim(cDetalle)), ofont )
	  endif
	case tipo = 3
	  @ nLIz, nCIz code128 ccodigo width npix size nlongi of oPrn mode tipo128
	  if lPvp
	    oPrn:Say( nLIzpvp, nCIzpvp,'PVP '+npvp+' '+ ' €.', ofont )
	  endif
	  if lRef
	    oPrn:Say( nLIzref, nCIzref,cRef, ofont )
	  endif
	  if lDen
	    oPrn:Say( nLIzdes, nCIzdes,OemToAnsi(rtrim(cDetalle)), ofont )
	  endif
	case tipo = 4
	  @ nLIz, nCIz code3_9 ccodigo width npix size nlongi of oPrn
	  if lPvp
	    oPrn:Say( nLIzpvp, nCIzpvp,'PVP '+npvp+' '+ ' €.', ofont )
	  endif
	  if lRef
	    oPrn:Say( nLIzref, nCIzref,cRef, ofont )
	  endif
	  if lDen
	    oPrn:Say( nLIzdes, nCIzdes,OemToAnsi(rtrim(cDetalle)), ofont )
	  endif
	case tipo = 5
	  if lBanner
	    @ nLIz, nCIz upca ccodigo width npix size nlongi of oPrn banner
	  else
	    @ nLIz, nCIz upca ccodigo width npix size nlongi of oPrn
	  endif
	  if lPvp
	    oPrn:Say( nLIzpvp, nCIzpvp,'PVP '+npvp+' '+ ' €.', ofont )
	  endif
	  if lRef
	    oPrn:Say( nLIzref, nCIzref,cRef, ofont )
	  endif
	  if lDen
	    oPrn:Say( nLIzdes, nCIzdes,OemToAnsi(rtrim(cDetalle)), ofont )
	  endif
	case tipo = 6
	  @ nLIz, nCIz codabar ccodigo width npix size nlongi of oPrn
	  if lPvp
	    oPrn:Say( nLIzpvp, nCIzpvp,'PVP '+npvp+' '+  ' €.', ofont )
	  endif
	  if lRef
	    oPrn:Say( nLIzref, nCIzref,cRef, ofont )
	  endif
	  if lDen
	    oPrn:Say( nLIzdes, nCIzdes,OemToAnsi(rtrim(cDetalle)), ofont )
	  endif
	case tipo = 7
	  if lBanner
	    @ nLIz, nCIz sup5 ccodigo width npix size nlongi of oPrn banner
	  else
	    @ nLIz, nCIz sup5 ccodigo width npix size nlongi of oPrn
	  endif
	  if lPvp
	    oPrn:Say( nLIzpvp, nCIzpvp,'PVP '+npvp+' '+ ' €.', ofont )
	  endif
	  if lRef
	    oPrn:Say( nLIzref, nCIzref,cRef, ofont )
	  endif
	  if lDen
	    oPrn:Say( nLIzdes, nCIzdes,OemToAnsi(rtrim(cDetalle)), ofont )
	  endif
      endcase

      ccprime += nancho
      if nOpci1 = 1
	 if echo = ncanti
	    tempo->( dbskip() )
	      if tempo->( eof() )
	         exit
	      endif
            do while .t.
               if tempo->Selec=.F. .or. tempo->cant <= 0
	          tempo->(dbskip())
                     if tempo->( eof() )
	                exit
	             endif
               else
                  exit
	       endif
            enddo
	       if tempo->( eof() )
	          exit
	       endif
	          echo := 0
         endif
      endif
      if echo = ncanti
	 exit
      endif
      echo += 1
      if ccprime + nancho > 21
	 llprime += nlargo
	 texto	 += nlargo
	 textoc  += nlargo
	 ccprime := cprime
      endif
      if llprime + nlargo >= 29.7
	      pasada += 1
	      exit
      endif
   enddo
   endpage
   SysRefresh()
 do case
  case nOpci1=1
   if tempo->(Eof())
 *  if echo = ncanti
      exit
   endif
  case nOpci1=2
   if echo = ncanti
      exit
   endif
  endcase
enddo
endprint
oFont:end()
oFont1:end()
tempo->(Dbsetfilter())
tempo->(Dbgoto(nindice))
return nil

static function CmtToPixel( nLi, nCi, oPrn )

local aPixel
aPixel	     := oPrn:Cmtr2Pix( nLi, nCi )
memvar->nLIz := aPixel[ 1 ]
memvar->nCIz := aPixel[ 2 ]
return NIL

A ver si te sirve de algo

Saludos

Jose Luis
--------------------------

Saludos



Jose Luis
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
oPrn:SETSIZE() no me funciona
Posted: Thu May 10, 2007 06:09 PM

José Luis:

Muchas gracias, por supuesto que sirve y de mucho.

Voy a hincarle el diente

Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero

Continue the discussion