Page 1 of 1
Ayuda con impresion por TDosPrn
Posted: Fri Mar 25, 2011 11:50 pm
by JoseGS
Hola amigos del foro:
Necesito ayuda con el siguiente codigo que utilizo para imprimir etiquetas en impresora matricial. El problema es que no logro hacer que se impriman mas de 10 etiquetas al mismo tiempo. No envia error ni nada, simplemente solo imprime 10 o menos etiquetas a la vez... Ya he verificado y si hace el ciclo mas de 10 veces cuando es necesario...
Este mismo codigo lo usaba antes en FW23 y funcionaba muy bien...
Gracias de antemano
Saludos
FOR X=1 TO NUM
oPrn:=TDosPrn():New((aCONFIG[50]))
oPrn:StartPage()
IF aET[4] // SOLO CODIGO
oPrn:Command("27,67,6","27,119,1")
oPrn:SAY(3,1,PADC(ALLTRIM(INVENT->CODIGO1),25))
oPrn:Command("27,119,0")
ELSE
oPrn:Command("27,67,6","27,15")
IF aET[1]
oPrn:SAY(1,3,aConfig[5])
ENDIF
oPrn:SAY(2,3," CODIGO: "+INVENT->CODIGO1 +" INT: "+INVENT->CODIGO2)
oPrn:SAY(3,3,"DESCRIP: "+SUBSTR(INVENT->DESCRIP1,1,50))
IF aET[2] // PRECIO
oPrn:SAY(4,3," PRECIO: "+TRANSFORM(INVENT->PRECIO1,'9,999.99')+' PRV:'+aETIQ[4]+' '+DTOC(dFEC)+' '+IF(aET[3],INVENT->UBICACION,''))
ELSE
oPrn:SAY(4,3," PRV:"+aETIQ[4]+' '+DTOC(dFEC)+' '+IF(aET[3],INVENT->UBICACION,''))
ENDIF
ENDIF
oPrn:EndPage()
oPrn:End()
NEXT
Re: Ayuda con impresion por TDosPrn
Posted: Sat Mar 26, 2011 8:29 pm
by sysctrl2
Yo uso un poco diferente la class tdosprn, quizas debas de iniciar la class antes del FOR ..NEXT,
checa mi codigo y comparalo con el tuyo,
en mi aplicacion han llegado a imprimir hasta 10 mil etiquetas y sin problemas, mejor el usuario se cansa jejeje.
saludos..
Code: Select all
* Programa :SysCtrl Labels,
* Funcion :programa para la impresion de etiquedas
* Desarrollo :programado el dia martes 07 de diciembre del 2005 al 08 de dic. 2005
* autor: Cesar Cortes Cruz
* SysCtrl Software
#include "fivewin.ch"
//----------------------------------------------------------------------------//
static nCuantos
static oGet
static oSay
Function _Main()
local cTitulo := "Impresion de etiquetas "
local oWnd
local cSoftWare := "SysCtrl Labels ..."
local oFont2
local nFor
nCuantos := 1
SET _3DLOOK ON
USE LABELS new shared
Define FONT oFont2 NAME GetSysFont() SIZE 0, -12 BOLD
DEFINE WINDOW oWnd TITLE cTitulo + labels->cia
@ 2, 2 BUTTON "Imprimir" SIZE 120, 25 OF oWnd ACTION _prnLabels()
@ 4, 2 BUTTON "Configurar" SIZE 120, 25 OF oWnd ACTION ( _config() )
@ 6, 2 BUTTON "Salir" SIZE 120, 25 OF oWnd ACTION ( msginfo("Bye.Bye.", "") ,oWnd:end() )
DEFINE MESSAGE OF oWnd PROMPT cSoftWare CENTERED ;
DATE KEYBOARD COLOR '*rb+/w' FONT oFont2
ACTIVATE WINDOW oWnd
labels->( dbcloseArea() )
oFont2:end()
return nil
function _prnLabels()
local cTitulo := "Impresion de etiquetas ..."
local oDlg
local oFont
local aBtn[2]
DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-12
DEFINE DIALOG oDlg RESOURCE 'DIALOG_1' TITLE cTitulo font oFont //brush oBrush
redefine SAY oSay id 52 prompt "" of oDlg
REDEFINE GET oGet VAR nCuantos ID 101 OF oDlg PICTURE "999999" ;
valid nCuantos > 0
REDEFINE BUTTON aBtn[1] ID 201 OF oDlg ACTION ( _imprimelas() ,oDlg:end() )
REDEFINE BUTTON aBtn[2] ID 202 OF oDlg ACTION ( oDlg:end())
Activate dialog oDlg centered
oFont:end()
return (.T.)
function _imprimelas()
local oPrn
local nFor
if !msgyesno('Impresion de etiquetas ... '+chr(13)+;
"Continuar ... ?",'Confirmar impresion')
return .t.
endif
CursorWait()
oPrn := TDosPrn():New( "LPT1" ) //iniciamos el objeto tdosprn.
oPrn:command( "27","67", "6" ) //la etiqueta mide una pulgada y el salto es cada 6 renglones.
oPrn:command( "27","48" ) //Condensando los renglones,
oPrn:command("15") //letra condensada
for nFor := 1 to nCuantos
oPrn:say(0,5, field->nombre )
oPrn:say(1,5, field->direccion )
oPrn:say(2,5, alltrim(field->colonia)+" " + alltrim( field->localidad) )
oPrn:say(3,5, alltrim( field->telefono ) )
oPrn:say(4,5, alltrim( field->telfax ) )
oPrn:say(5,5, alltrim( field->rfc ) )
oSay:settext( "Imprimiendo etiquetas " + str(nFor, 6) )
oSay:refresh()
sysrefresh()
next
oPrn:say(6,0, CHR(27)+"2" ) //obligamos a que la impresora haga un reset
oPrn:end() //matamos el objeto de impresion ...
CursorArrow()
return (.T.)
function _config() //aqui se configuran los datos que se imprimen en la etiqueta..
local oDbf
local cTitulo := "Datos que se imprimen en la etiqueta ..."
local oGet[10]
local oFont
local oDlg
local oBtn
dbselectArea("labels")
database oDbf
oDbf:load()
DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-12
DEFINE DIALOG oDlg RESOURCE 'DIALOG_2' TITLE cTitulo font oFont //brush oBrush
REDEFINE GET oGet[1] VAR oDbf:nombre ID 101 OF oDlg
REDEFINE GET oGet[2] VAR oDbf:direccion ID 102 OF oDlg
REDEFINE GET oGet[3] VAR oDbf:colonia ID 103 OF oDlg
REDEFINE GET oGet[4] VAR oDbf:localidad ID 104 OF oDlg
REDEFINE GET oGet[5] VAR oDbf:telefono ID 105 OF oDlg
REDEFINE GET oGet[6] VAR oDbf:telfax ID 106 OF oDlg
REDEFINE GET oGet[7] VAR oDbf:rfc ID 107 OF oDlg
REDEFINE BUTTON oBtn ID 201 OF oDlg ACTION ( oDbf:save() ,oDlg:end() )
Activate dialog oDlg centered
return (.T.)
//----------------------------------------------------------------------------//
Re: Ayuda con impresion por TDosPrn
Posted: Sun Mar 27, 2011 1:25 am
by JoseGS
Gracias amigo, voy a probar...
saludos