oPrn:SETSIZE() no me funciona

Post Reply
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

oPrn:SETSIZE() no me funciona

Post by Armando »

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
JoseLuis
Posts: 359
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Post by JoseLuis »

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
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Post by Armando »

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
JoseLuis
Posts: 359
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Post by JoseLuis »

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
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Post by Armando »

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
JoseLuis
Posts: 359
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Post by JoseLuis »

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
JoseLuis
Posts: 359
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Post by JoseLuis »

Aqui está

Code: Select all

*+±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
*+
*+    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
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Post by Armando »

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
Post Reply