Impresión con TDosPrn

Impresión con TDosPrn

Postby juan_arroyo_t » Sat Nov 07, 2009 4:29 pm

Por favor necesito que me orienten

Estoy usando TDosPrn para mis reportes

Cuando visualizo el reporte noto que ya en la segunda hoja aparece la primera linea de impresión una line antes y cuando lo mando a la impresora, ademas de lo anterior, la primera linea me la imprime a la izquierda

Reproduzco aquí un programa donde elaboro un reporte

Si esto no es suficiente y se requiere más información, por favor hagánmelo saber

Saludos
México

/* ------------------------------------------------------------------
PROGRAMA : ------------------- EMIEDO.PRG
PROPOSITO : ------------------- EMISION DE ESTADOS DE CUENTA DE
DE CLIENTES SELECTIVO Y/O GENERAL
FACTURAS PENDIENTES Y/O TODAS
LLAMADO POR : ----------------- MODULO DE CONSULTAS
AUTOR : ----------------------- JUAN ARROYO
ULT. ACTUALIZACION : ---------- 06/11/09
--------------------------------------------------------------------- */

# include "FiveWin.ch"
# include "Inkey.ch"

STATIC cCliNum, cCliNom, cSel, lSoloPen, oPrn, cTitulo, cTitRep, ;
cTitRep2, Pagina, nLinea

FUNCTION EmiEdo()
LOCAL oDlg, oCbx, oChk, oBAce
LOCAL oGet1, oGet2
LOCAL aItems := {"Selectivo", ;
"General "}

SETKEY( VK_F2,{|| VerCli()} )

USE cfac INDEX cfaccli NEW
USE pag INDEX pagfac NEW
USE cli INDEX clinum, clinom NEW

cSel := "Selectivo"
cCliNum := SPACE(4)
cCliNom := SPACE(50)
lSoloPen := .T.

DEFINE DIALOG oDlg RESOURCE "EmiEdo"

REDEFINE COMBOBOX oCbx VAR cSel ID 101 OF oDlg ;
ITEMS aItems

REDEFINE GET oGet1 VAR cCliNum ID 102 OF oDlg ;
PICTURE "9999" ;
WHEN LEFT(cSel,1) == "S" ;
VALID IIF(GetKeyState(VK_UP),.T.,OkCli(oGet2, oDlg))

REDEFINE GET oGet2 VAR cCliNom ID 103 OF oDlg
oGet2:Disable()

REDEFINE CHECKBOX oChk VAR lSoloPen ID 104 OF oDlg

REDEFINE BUTTON oBAce ID 105 OF oDlg ;
ACTION ImpEdoCta(), oDlg:End()

ACTIVATE DIALOG oDlg CENTERED
CLOSE DATABASES

RETURN NIL

//---------------------------------------------------------//

STATIC FUNCTION BuscaCli(cNomCli)
LOCAL oDlg, oLbx

cNomCli := TRIM(cNomCli)
cli->(DBSETORDER(2))
cli->(DBSEEK(cNomCli))

DEFINE DIALOG oDlg TITLE "Catálogo de clientes" ;
RESOURCE "ActCli"

REDEFINE LISTBOX olbx ;
FIELDS cli->clinum, cli->clinom, cli->agente ;
HEAD "CLAVE", PADC("NOMBRE",35," "), "VEND" ;
ALIAS "cli" ;
ID 101 ;
OF oDlg ;
ON LEFT DBLCLICK( cCliNum := cli->clinum, oDlg:End() ) Update
oLbx:bKeydown := {|nKey| IIF(nKey = 13,cCliNum := cli->clinum,)}
oLbx:cToolTip := "Seleccione con doble click o con Enter"

ACTIVATE DIALOG oDlg CENTERED

RETURN NIL

//---------------------------------------------------------//

STATIC FUNCTION Enc_Rep(mCliNum, mCliNom, cCliAte, cDirec, cColon, ;
cCiudad, cEstado, cCodPos)
LOCAL mcia := "SERRETECNO, S. A. DE C. V."
LOCAL mDirec1 := "RIVA PALACIO No. 86"
LOCAL mDirec2 := "TLALNEPANTLA, MEX."
nLinea := 5
oPrn:Command(oPrn:cNormal)
oPrn:Say( nLinea+00, 001, PADC(mCia,85," ") )
oPrn:Say( nLinea+01, 001, PADC(mDirec1,85," ") )
oPrn:Say( nLinea+02, 001, PADC(mDirec2,85," ") )
oPrn:Say( nLinea+05, 001, PADC("ESTADO DE CUENTA",85," ") )
oPrn:Say( nLinea+06, 001, PADC("----------------",85," ") )
oPrn:Say( nLinea+08, 068, "HOJA No. " + LTRIM(STR(Pagina,3)) )
IF LEFT(cSel,1) == "S"
oPrn:Say( nLinea+10, 001, PADC("*** FACTURAS PENDIENTES ***",85," ") )
ELSE
oPrn:Say( nLinea+10, 001, PADC("*** TODAS LAS FACTURAS ***",85," ") )
ENDIF
oPrn:Say( nLinea+14, 004, mCliNum )
oPrn:Say( nLinea+15, 004, mCliNom )
IF LEN(cCliAte) > 0
oPrn:Say( nLinea+16, 004, cCliAte )
oPrn:Say( nLinea+17, 004, cDirec )
IF LEN(cColon) > 0
oPrn:Say( nLinea+18, 004, cColon )
ELSE
oPrn:Say( nLinea+18, 004, cCiudad + ", " + cEstado + " " + cCodPos )
ENDIF
ELSE
oPrn:Say( nLinea+16, 004, cDirec )
IF LEN(cColon) > 0
oPrn:Say( nLinea+17, 004, cColon )
oPrn:Say( nLinea+18, 004, cCiudad + ", " + cEstado + " " + cCodPos )
ELSE
oPrn:Say( nLinea+17, 004, cCiudad + ", " + cEstado + " " + cCodPos )
ENDIF
ENDIF
oPrn:Say( nLinea+19, (78-LEN(DTOC(DATE()))), DTOC(DATE()) )
oPrn:Say( nLinea+20, 004, REPLICATE("-",76) )
oPrn:Say( nLinea+21, 004, "FACTURA" )
oPrn:Say( nLinea+21, 014, "FECHA" )
oPrn:Say( nLinea+21, 023, "VENCIM" )
oPrn:Say( nLinea+21, 039, "IMPORTE" )
oPrn:Say( nLinea+21, 058, "PAGO" )
oPrn:Say( nLinea+21, 064, "FECHA PAGO" )
oPrn:Say( nLinea+22, 004, REPLICATE("-",76) )
nLinea := 29
RETURN NIL

//---------------------------------------------------------//

STATIC FUNCTION ImpEdoCta()

local oDlg, oBtn1, oBtn2

SET _3DLOOK ON

SetMTxtPreview( .f., 5, 2, .f., .t. )

DEFINE DIALOG oDlg FROM 5, 5 TO 18, 40 ;
TITLE "Imprime todos los moviemientos de un cliente"

@ 3, 2 BUTTON oBtn1 PROMPT "&Imprimir " OF oDlg SIZE 40,12 ;
ACTION (ImpRep( .t., oDlg), oDlg:End() )

@ 3, 12 BUTTON oBtn2 PROMPT "&Cancelar" OF oDlg SIZE 40,12 ;
ACTION oDlg:End()

ACTIVATE DIALOG oDlg CENTERED

return nil

//---------------------------------------------------------//

STATIC FUNCTION ImpRep( lModal, oDlg )
LOCAL nTImp, nTPago, nTSaldo, nTxven, nT1a30, nT31a60, nT61a90, ;
nTmas90
LOCAL mCliNum, mCliNom, cCliAte, cDirec, cColon, cCiudad, cEstado, ;
cCodPos, TotPag, SaldoFac
LOCAL cFacNum, nImpFac, dVencFac, dFechaFac

nTImp := nTPago := nTSaldo := nTxven := nT1a30 := 0
nT31a60 := nT61a90 := nTmas90 := 0
mCliNum := cCliNum
mCliNom := cCliNom
cTitulo := "*** Antiguedad de saldos de clientes"
Pagina := 1
SELECT cli
mCliNum := cli->clinum
mCliNom := TRIM(cli->clinom)
cCliAte := TRIM(cli->cliate)
cDirec := TRIM(cli->direc)
cColon := TRIM(cli->colon)
cCiudad := TRIM(cli->ciudad)
cEstado := TRIM(cli->estado)
cCodPos := cli->codpos

oPrn:= TDosPrn():New()
IF ! oPrn:lCancel
oPrn:StartPage()
Enc_Rep(mCliNum, mCliNom, cCliAte, cDirec, cColon, ;
cCiudad, cEstado, cCodPos)

SELECT cli
DO WHILE cli->(!EOF())
// Inicializa variables de clientes
mCliNum := cli->clinum
mCliNom := TRIM(cli->clinom)
cCliAte := TRIM(cli->cliate)
cDirec := TRIM(cli->direc)
cColon := TRIM(cli->colon)
cCiudad := TRIM(cli->ciudad)
cEstado := TRIM(cli->estado)
cCodPos := cli->codpos

IF !cfac->(DBSEEK(cCliNum))
cli->(DBSKIP())
LOOP
ENDIF
DO WHILE cfac->clinum = cCliNum
IF cfac->tip_fac = "M"
cfac->(DBSKIP())
LOOP
ENDIF
IF cfac->estado = "C"
cfac->(DBSKIP())
LOOP
ENDIF
IF LEFT(cSel,1) == "S"
IF cfac->impfac = cfac->pagototal
cfac->(DBSKIP())
LOOP
ENDIF
ENDIF

// Inicializa variables de facturas
cFacNum := cfac->facnum
dFechaFac := cfac->fechafac
dVencFac := cfac->vencfac
nImpFac := cfac->impfac

// Imprime partidas
oPrn:Say( nLinea, 004, cFacNum )
oPrn:Say( nLinea, 012, DTOC(dFechaFac) )
oPrn:Say( nLinea, 022, DTOC(dVencFac) )
oPrn:Say( nLinea, 032, TRANSFORM(nImpFac,"999,999,999.99") )
SELECT pag
IF !pag->(DBSEEK(cFacNum))
nLinea := nLinea + 1
IF nLinea > 50
salto(mCliNum, mCliNom, cCliAte, cDirec, cColon, ;
cCiudad, cEstado, cCodPos)
ENDIF
ENDIF
totpag = 0
saldofac := 0
DO WHILE pag->facnum = cFacNum
oPrn:Say( nLinea, 048, TRANSFORM(pag->cantpag,"999,999,999.99") )
oPrn:Say( nLinea, 065, DTOC(pag->fechapag) )
TotPag := TotPag + pag->cantpag
nLinea := nLinea + 1
IF nLinea > 50
salto(mCliNum, mCliNom, cCliAte, cDirec, cColon, ;
cCiudad, cEstado, cCodPos)
ENDIF
pag->(DBSKIP())
ENDDO
nTImp := nTImp + nImpFac
nTPago := nTPago + totpag
nTSaldo := nTImp - nTPago
saldofac := nImpFac - totpag
DO CASE
CASE dVencFac >= DATE()
nTxven := nTxven + saldofac
CASE DATE() - dVencFac <= 30
nT1a30 := nT1a30 + saldofac
CASE DATE() - dVencFac <= 60
nT31a60 := nT31a60 + saldofac
CASE DATE() - dVencFac <= 90
nT61a90 := nT61a90 + saldofac
OTHERWISE
nTmas90 := nTmas90 + saldofac
ENDCASE
cfac->(DBSKIP())
ENDDO

// Imprime totales
IF nTImp <> 0
nLinea = nLinea + 1
oPrn:Say( nLinea, 032, REPLICATE("-",14) )
oPrn:Say( nLinea, 048, REPLICATE("-",14) )
nLinea = nLinea + 1
oPrn:Say( nLinea, 032, TRANSFORM(nTImp,"999,999,999.99") )
oPrn:Say( nLinea, 048, TRANSFORM(nTPago,"999,999,999.99") )
oPrn:Say( 053, 009, "NO VENCIDO " + ;
TRANSFORM(nTxven,"999,999,999.99") )
oPrn:Say( 054, 009, " 1 A 30 DIAS DE RETRASO " + ;
TRANSFORM(nT1a30, "999,999,999.99") )
oPrn:Say( 055, 009, "31 A 60 DIAS DE RETRASO " + ;
TRANSFORM(nT31a60,"999,999,999.99") )
oPrn:Say( 056, 009, "61 A 90 DIAS DE RETRASO " + ;
TRANSFORM(nT61a90,"999,999,999.99"))
oPrn:Say( 057, 009, "MAS DE 90 DIAS DE RETRASO " + ;
TRANSFORM(nTmas90,"999,999,999.99") )
oPrn:Say( 058, 035, REPLICATE("-",14) )
oPrn:Say( 059, 009, "T O T A L : - " + ;
TRANSFORM(nTSaldo,"999,999,999.99") )
DO CASE
CASE nTSaldo < 0
oPrn:Say( 061, 009, "SU SALDO A FAVOR PUEDE SER " + ;
"ACREDITADO A FUTURAS COMPRAS" )
CASE nTSaldo = 0
oPrn:Say( 061, 009, "GRACIAS POR SU PRONTO PAGO" )
CASE nTmas90 > 0
oPrn:Say( 061, 009, "SU CUENTA ESTA SERIAMENTE ATRASADA; " + ;
"FAVOR DE PAGAR" )
oPrn:Say( 062, 009, "LO MAS RAPIDAMENTE POSIBLE" )
CASE nT61a90 > 0
oPrn:Say( 061, 009, "SU CUENTA PRESENTA UN GRAN ATRASO; " + ;
"FAVOR DE ENVIARNOS" )
oPrn:Say( 062, 009, "SU PAGO LO MAS PRONTO POSIBLE" )
CASE nT31a60 > 0
oPrn:Say( 061, 009, "SU CUENTA PRESENTA UN ATRASO; " + ;
"FAVOR DE ENVIARNOS SU PAGO" )
CASE nT1a30 > 0
oPrn:Say( 061, 009, "FAVOR DE PAGAR SU CUENTA ATRASADA" )
CASE nTxven > 0
oPrn:Say( 061, 009, "LE AGRADECEREMOS ENVIE SU PAGO " + ;
"AL VENCIMIENTO" )
ENDCASE
nTImp := nTPago := nTSaldo := nTxven := 0
nT1a30 := nT31a60 := nT61a90 := nTmas90 := 0
ENDIF


cli->(DBSKIP())
IF LEFT(cSel,1) == "S"
EXIT
ENDIF
ENDDO
IF nLinea >= 33
EJECT
ENDIF
ENDIF
CLOSE DATABASES
oPrn:EndPage() // salta pagina
oPrn:End()

//--- Passar a Dialog como ultimo parametro.
if oPrn:lPreview
TxtPreview( oPrn:cDevice, cTitulo, lModal,,, oPrn, oDlg, , ;
oPrn:lModoGraf )
endif

RETURN NIL

//---------------------------------------------------------//

STATIC FUNCTION OkCli( oGet2, oDlg )
IF EMPTY(cCliNum)
MsgAlert("Introduzca un número de cliente...")
RETURN .F.
ENDIF
cli->(DBSETORDER(1))
cli->(DBSEEK(cCliNum))
cCliNom := cli->clinom
oGet2:varput(TRIM(cCliNom))
oGet2:refresh()
RETURN .T.

//---------------------------------------------------------//

STATIC FUNCTION Salto(mCliNum, mCliNom, cCliAte, cDirec, cColon, ;
cCiudad, cEstado, cCodPos)
Pagina := Pagina + 1
Enc_Rep(mCliNum, mCliNom, cCliAte, cDirec, cColon, cCiudad, ;
cEstado, cCodPos)
RETURN NIL

//---------------------------------------------------------//

STATIC FUNCTION VerCli()
LOCAL oDlg, obAce, oIco
LOCAL cNomCli := SPACE(25)
LOCAL oGet
LOCAL cSay := "Nombre"

DEFINE DIALOG oDlg TITLE "Buscar cliente" RESOURCE "Buscar" OF oDlg

REDEFINE ICON oIco ID 101 OF oDlg ;
FILENAME "find.ico"

REDEFINE GET oGet VAR cNomCli ID 103 OF oDlg ;
PICTURE "@!"

REDEFINE BUTTON obAce ID 104 OF oDlg ;
ACTION BuscaCli(cNomCli), oDlg:End()

ACTIVATE DIALOG oDlg CENTERED
KEYBOARD CHR(13)
oDlg:End()

RETURN NIL

//---------------------------------------------------------//


// FIN DE EMIEDO.PRG
Juan Arroyo
México
FWH 7.12 VERCE 5.3 xHarbour 1.1.0
juan_arroyo_t@hotmail.com
User avatar
juan_arroyo_t
 
Posts: 196
Joined: Fri May 15, 2009 1:25 am
Location: Cuautitlán, Mexico

Re: Impresión con TDosPrn

Postby armando.lagunas » Mon Nov 09, 2009 2:57 am

hola:

quiero ayudarte, pero coloca solo el trozo de código en donde específicamente tienes el problema , al ver el código completo uno tiende a perderse en las diferentes funciones.

para orientarte un poco, al imprimir en tdosprn tienes que tener el cuidado de no pasarte en el numero de columnas por fila, si sucede esto la impresión pasa a la izquierda de la siguiente linea y por ende se descuadra todo el informe.

un ejemplo :

en los totales, la columna es 65 + los 12 dígitos del numero, queda en la orilla derecha y encuadrada en lo que tiene que hacer, si cambio el campo que se imprime a 15 números, la impresión salta a la linea siguiente y descuadra desde hay en adelante hasta el final de la impresión, generalmente cuando uno utiliza campos de caracteres largos como nombres o direcciones sucede este fenómeno.

Code: Select all  Expand view

      oPrn := TdosPrn():New("LPT1")
      oPrn:cFormFeed:=""
      oPrn:Command('27,67,66')  // tamaño carta
      oPrn:StartPage()
      oPrn:Say(11,30, "FACTURA "+TRANSFORM(cFac,"########") )
      oPrn:Say(13,13, DTOC(dFec)  )
      oPrn:Say(14,13, cNom )
      oPrn:Say(14,45, cRut )
      oPrn:Say(15,13, ALLTRIM(cDir) )
      oPrn:Say(15,45, cCiu )
      oPrn:Say(16,13, cGir )
      SELECT PA03  ; DBGOTOP() ; Hincha := 20  ; tTot := 0
      DO WHILE !EOF()
         IF SUBSTR(PA03->FRUT,1,1) = cEsp
            tNet := PA03->NETO * nPre
            oPrn:Say(Hincha, 2,TRANSFORM(PA03->NETO,"@E ##,###")+"  "+PA03->FRUT+" "+PA03->NOMB+"       "+TRANSFORM(nPre,"@E #,###.##")+"     "+TRANSFORM(tNet,"@E ##,###,###"))
            tTot += tNet
            Hincha++
            xCan := TRANSFORM(PA03->NETO,"99999999.99")
            xPre := TRANSFORM(nPre      ,"99999999.99")
            xNet := TRANSFORM(tNet      ,"99999999.99")
         ENDIF
         SELECT PA03
         SKIP
      ENDDO
      Mono := 0
      oPrn:SayCmp(50,07, _Numero( (tTot * zIva )))
      oPrn:Say(50,65,TRANSFORM(tTot,"@E ####,###,###") )
      oPrn:Say(51,65,TRANSFORM(((tTot * zIva) - tTot),"@E ####,###,###") )
      oPrn:Say(52,65,TRANSFORM( Mono                 ,"@E ####,###,###") )
      oPrn:Say(53,65,TRANSFORM( (tTot * zIva)        ,"@E ####,###,###") )
      oPrn:Say(54,65,TRANSFORM(((tTot * zIva) - tTot),"@E ####,###,###") )
      oPrn:Say(55,65,TRANSFORM(tTot,"@E ####,###,###") )
      oPrn:Say(56,05," ")
      oPrn:EndPage()
      oPrn:Command('27,67,66')
      oPrn:End()
 




espero que entiendas, saludos desde Chile.
SkyPe: armando.lagunas@hotmail.com
Mail: armando.lagunas@gmail.com
User avatar
armando.lagunas
 
Posts: 346
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile

Re: Impresión con TDosPrn

Postby juan_arroyo_t » Tue Nov 10, 2009 4:49 am

Hola Armando

Te envìo un còdigo mas conciso

Code: Select all  Expand view
//---------------------------------------------------------//

STATIC FUNCTION Enc_Rep()
    nLinea := 5
    oPrn:Say( nLinea+00, 004, REPLICATE("-",76) )
    oPrn:Say( nLinea+01, 004, "FACTURA" )
    oPrn:Say( nLinea+01, 014, "FECHA" )
    oPrn:Say( nLinea+01, 023, "VENCIM" )
    oPrn:Say( nLinea+01, 039, "IMPORTE" )
    oPrn:Say( nLinea+01, 058, "PAGO" )
    oPrn:Say( nLinea+01, 064, "FECHA PAGO" )
    oPrn:Say( nLinea+02, 004, REPLICATE("-",76) )
    nLinea := 9
RETURN NIL

//---------------------------------------------------------//

STATIC FUNCTION ImpRep( lModal, oDlg )

oPrn:= TDosPrn():New()
IF ! oPrn:lCancel
    oPrn:StartPage()
    oPrn:Command(oPrn:cNormal)
    Enc_Rep()

    SELECT cfac
    DO WHILE cfac->(!EOF())
        // Imprime partidas
        oPrn:Say( nLinea, 004, cFacNum )
        oPrn:Say( nLinea, 012, DTOC(dFechaFac) )
        oPrn:Say( nLinea, 022, DTOC(dVencFac) )
        oPrn:Say( nLinea, 032, TRANSFORM(nImpFac,"999,999,999.99") )
        nLinea := nLinea + 1
        nTImp := nTImp + nImpFac
        IF nLinea > 50
            salto()
        ENDIF
        cfac->(DBSKIP())
    ENDDO

    // Imprime totales
    IF nTImp <> 0
        nLinea = nLinea + 1
        oPrn:Say( nLinea, 032, REPLICATE("-",14) )
        oPrn:Say( nLinea, 048, REPLICATE("-",14) )
        nLinea = nLinea + 1
        oPrn:Say( nLinea, 032, TRANSFORM(nTImp,"999,999,999.99") )
        oPrn:Say( nLinea, 048, TRANSFORM(nTPago,"999,999,999.99") )
    ENDIF

    IF nLinea >= 5
        EJECT
    ENDIF
    CLOSE DATABASES
    oPrn:EndPage() // salta pagina
    oPrn:End()

    //--- Passar a Dialog como ultimo parametro.
    if oPrn:lPreview
        TxtPreview( oPrn:cDevice, cTitulo, lModal,,, oPrn, oDlg, , ;
                        oPrn:lModoGraf )
    endif

ENDIF
RETURN NIL

//---------------------------------------------------------//

STATIC FUNCTION Salto()
Pagina := Pagina + 1
Enc_Rep()
RETURN NIL

//---------------------------------------------------------//

// FIN DE MUESTRA.PRG


Entendí muy bien como una linea de impresión si es demasiado larga, una parte se desplaza a la línea siguiente , pero no es este el caso.

En el ejemplo que me envías sólo se imprime una página pero mi reporte puede contener más de una, no se si alguna de mis intrucciones este fuera de lugar.

Mi reporte se imprime correctamente en la primera página pero después de ésta, la primera línea de la segunda se imprime del lado izquierdo y una línea antes que la primera línea de la primera pagina

Espero darme a entender

Saludos

Juan
Juan Arroyo
México
FWH 7.12 VERCE 5.3 xHarbour 1.1.0
juan_arroyo_t@hotmail.com
User avatar
juan_arroyo_t
 
Posts: 196
Joined: Fri May 15, 2009 1:25 am
Location: Cuautitlán, Mexico

Re: Impresión con TDosPrn

Postby Armando » Tue Nov 10, 2009 11:55 am

Juan:

Será que en la función Salto() te falta un oPrn:EndPage() antes de Enc_Rep() ?

Code: Select all  Expand view

//---------------------------------------------------------//
STATIC FUNCTION Salto()
Pagina := Pagina + 1
oPrn:EndPage()
Enc_Rep()
RETURN NIL
 


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

Re: Impresión con TDosPrn

Postby Armando Picon » Tue Nov 10, 2009 4:52 pm

Después de cada llamada a Salto(), debes ajustar nuevamente nLinea. para que en la pagina siguiente no haya un valor que te esta ocasionando la impresión inadecuada.
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
User avatar
Armando Picon
 
Posts: 446
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 43 guests

cron