Resoluciones de las impresoras X TReport/TPrinter
Resoluciones de las impresoras X TReport/TPrinter
Hola foro,
De vez en cuando me deparo con este problema: Mis reportes hechos con TReport o TPrinter (con este ultimo usando CmSay) cuando usados en impresoras con diferentes resoluciones me muestra resultados diferentes en el preview. Entonces pregunto: ¿No hay manera de hacer todos los reportes o con TReport o con TPrinter y que tengan el mismo resultado en cualquier impresora con resolucion diferente? ¿Cuales son sus experiencias en este tema?
Saludos,
De vez en cuando me deparo con este problema: Mis reportes hechos con TReport o TPrinter (con este ultimo usando CmSay) cuando usados en impresoras con diferentes resoluciones me muestra resultados diferentes en el preview. Entonces pregunto: ¿No hay manera de hacer todos los reportes o con TReport o con TPrinter y que tengan el mismo resultado en cualquier impresora con resolucion diferente? ¿Cuales son sus experiencias en este tema?
Saludos,
Kleyber Derick
FWH / xHb / xDevStudio / SQLLIB
FWH / xHb / xDevStudio / SQLLIB
- carlos vargas
- Posts: 1421
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
Kleyber
Lamentablemente parece que nop.
Yo mismo he sufrido este problema, aun cuando uso CmSay
las posiciones no son identicas.
incluso ahora mismo tengo este problema y por mas que le he dado vuelta al asunto nada
mirate este codigo, aun cuando uso cmsay me sale en diferentes posiciones en diferentes impresoras.
salu2
carlos vargas
Lamentablemente parece que nop.
Yo mismo he sufrido este problema, aun cuando uso CmSay
las posiciones no son identicas.
incluso ahora mismo tengo este problema y por mas que le he dado vuelta al asunto nada
mirate este codigo, aun cuando uso cmsay me sale en diferentes posiciones en diferentes impresoras.
salu2
carlos vargas
Code: Select all
PROCEDURE Contratos_ImprimirFormato()
LOCAL oPrn
LOCAL oFont1,oFont2,oFont3
LOCAL cCodCon,cNomSus,cDirSus,cTelSus,cFecNac,cEdaSus,cCedSus,cEstCiv,cProSus,cDirTra,cTelTra
LOCAL cJardin,cBloque,cLote,cPrecio
LOCAL cTotal,cPrima,cSaldo
LOCAL cCTotal,cCPrima,cCSaldo
LOCAL cNumCuo,cValCuo,cDiaPag
LOCAL cDia,cMes,cAno
/*pasa datos a variables de tipo caracter*/
cCodCon := oCont:mc_codcon
cNomSus := ft_proper(oCont:mc_nomsus)
cDirSus := ft_proper(oCont:mc_dirsus)
cTelSus := oCont:mc_teldom
cFecNac := DToC(oCont:mc_fecnac)
cEdaSus := Transform(nEdad,"999")
cCedSus := oCont:mc_cedula
cEstCiv := IIf(oCont:mc_casado,"Casado","Soltero")
cProSus := ft_proper(oCont:mc_prosus)
cDirTra := ft_proper(oCont:mc_dirtra)
cTelTra := oCont:mc_teltra
cTotal := Transform(oCont:mc_totcon,"999,999.99")
cPrima := Transform(oCont:mc_pagpri,"999,999.99")
cSaldo := Transform(oCont:mc_salfin,"999,999.99")
cCTotal := Transform(oCont:mc_totconc,"999,999.99")
cCPrima := Transform(oCont:mc_pagpric,"999,999.99")
cCSaldo := Transform(oCont:mc_salfinc,"999,999.99")
cNumCuo := Transform(oCont:mc_numcuo,"999")
cValCuo := Transform(oCont:mc_valabo,"999,999.99")
cDiaPag := Transform(Day(oCont:mc_diapag),"99")
//cDiaPag := DToC(oCont:mc_diapag)
cDia := Transform(Day(oCont:mc_feccon),"99")
cMes := CMonth(oCont:mc_feccon)
cAno := Transform(Year(oCont:mc_feccon),"9999")
/*define objeto printer*/
PRINTER oPrn FROM USER
/*valida si selecciono una impresora*/
IF Empty( oPrn:hDC )
RETURN
ENDIF
/*define fuentes a usar*/
DEFINE FONT oFont1 NAME "Times New Roman" SIZE 0,-12 OF oPrn
DEFINE FONT oFont2 NAME "Times New Roman" SIZE 0,-08 OF oPrn
DEFINE FONT oFont3 NAME "Times New Roman" SIZE 0,-14 OF oPrn BOLD
/*define tama¤o del papel*/
oPrn:SetPage(DMPAPER_LETTER)
/*ajuste*/
//oPrn:nXOffset:=oPrn:cm2Pix(nXFix)
//oPrn:nYOffset:=oPrn:cm2Pix(nYFix)
/*inicia pagina*/
PAGE
/*inserta datos en pagina*/
/*generales del contratantes*/
oPrn:CmSay(03.80,16.80,cCodCon,oFont3,oPrn:cm2Pix(04.50)) // numero de contrato
oPrn:CmSay(04.80,05.50,cNomSus,oFont1,oPrn:cm2Pix(15.00)) // nombre del suscriptor
oPrn:CmSay(05.60,03.30,cDirSus,oFont1,oPrn:cm2Pix(12.50)) // direccion del suscriptor
oPrn:CmSay(05.60,17.60,cTelSus,oFont1,oPrn:cm2Pix(03.00)) // telefono del suscriptor
oPrn:CmSay(06.50,05.50,cFecNac,oFont1,oPrn:cm2Pix(03.20)) // fecha de nacimiento
oPrn:CmSay(06.50,10.40,cEdaSus,oFont1,oPrn:cm2Pix(01.00)) // edad
oPrn:CmSay(06.50,12.70,cCedSus,oFont2,oPrn:cm2Pix(02.80)) // cedula
oPrn:CmSay(06.50,17.60,cEstCiv,oFont1,oPrn:cm2Pix(03.00)) // estado civil
oPrn:CmSay(07.30,03.30,cProSus,oFont1,oPrn:cm2Pix(05.50)) // profesion
oPrn:CmSay(07.30,11.60,cDirTra,oFont2,oPrn:cm2Pix(03.70)) // trabajo
oPrn:CmSay(07.30,17.60,cTelTra,oFont1,oPrn:cm2Pix(03.00)) // telefono
/*localizacion de lotes*/
DBSELECT "LOTE"
LOTE->(DBGoTop())
/*inicializa variable*/
nFila := 10
/*procesa cada lote*/
DO WHILE !LOTE->(Eof())
/*pasa valores a variables cadena*/
cJardin := ft_proper(StrTran(JARD->MJ_NOMJAR,"JARDIN",""))
cBloque := StrToken(LOTE->ML_CODLOT,2,"-")
cLote := StrToken(LOTE->ML_CODLOT,3,"-")
cPrecio := Transform(LOTE->ML_PREVEN,"999,999.99")
/*imprime datos*/
oPrn:CmSay(nFila,04.50,cLote, oFont1,oPrn:cm2Pix(01.80)) // lote
oPrn:CmSay(nFila,07.20,cJardin,oFont1,oPrn:cm2Pix(04.80)) // jardin
oPrn:CmSay(nFila,14.00,cBloque,oFont1,oPrn:cm2Pix(01.30)) // bloque
oPrn:CmSay(nFila,16.60,cPrecio,oFont1,oPrn:cm2Pix(02.40),,PAD_RIGHT) // precio
/*incrementa fila*/
nFila+=0.5
/*salta hacia el proximo lote*/
LOTE->(DBSkip())
ENDDO
/*restaura area*/
LOTE->(DBGoTop())
DBSELECT "CONT"
/*total*/
oPrn:CmSay(12.50,15.50,cTotal,oFont1,oPrn:cm2Pix(03.00),,PAD_RIGHT) // total
/**/
oPrn:CmSay(13.70,07.00,cTotal, oFont1,oPrn:cm2Pix(03.00),,PAD_RIGHT) // total U$
oPrn:CmSay(14.20,07.00,cPrima, oFont1,oPrn:cm2Pix(03.00),,PAD_RIGHT) // prima U$
oPrn:CmSay(14.70,07.00,cSaldo, oFont1,oPrn:cm2Pix(03.00),,PAD_RIGHT) // total U$
oPrn:CmSay(13.70,15.50,cCTotal,oFont1,oPrn:cm2Pix(03.00),,PAD_RIGHT) // total C$
oPrn:CmSay(14.20,15.50,cCPrima,oFont1,oPrn:cm2Pix(03.00),,PAD_RIGHT) // prima C$
oPrn:CmSay(14.70,15.50,cCSaldo,oFont1,oPrn:cm2Pix(03.00),,PAD_RIGHT) // total C$
oPrn:CmSay(15.20,06.20,cNumCuo,oFont1,oPrn:cm2Pix(01.00),,PAD_RIGHT) // numero de cuotas
oPrn:CmSay(15.20,13.50,cDiaPag,oFont1,oPrn:cm2Pix(02.20),,PAD_RIGHT) // dias de pago
oPrn:CmSay(15.70,03.50,cValCuo,oFont1,oPrn:cm2Pix(03.20),,PAD_RIGHT) // valor de cuotas
oPrn:CmSay(16.60,03.00,cDia,oFont1,oPrn:cm2Pix(01.00)) // dia
oPrn:CmSay(16.60,05.50,cMes,oFont1,oPrn:cm2Pix(03.00)) // mes
oPrn:CmSay(16.60,10.50,cAno,oFont1,oPrn:cm2Pix(02.00)) // a¤o
ENDPAGE
ENDPRINT
oFont1:End()
oFont2:End()
oFont3:End()
RETURN
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Vargas
Desde Managua, Nicaragua (CA)
- Armando Picon
- Posts: 448
- Joined: Mon Dec 26, 2005 9:11 pm
- Location: Lima, Peru
Hola Kleyber
Tiempo atrás en el foro dejé un codigo para impresiones para facturas. En el utilicé como medida de ajuste un factor referido a dimensiones del papel antes que a los píxels de la máquina.Voy a ubicarlo para que veas si te sirve el estilo.
Saludos
Tiempo atrás en el foro dejé un codigo para impresiones para facturas. En el utilicé como medida de ajuste un factor referido a dimensiones del papel antes que a los píxels de la máquina.Voy a ubicarlo para que veas si te sirve el estilo.
Saludos
Kleyber wrote:¿No hay nadie que tenga alguna experiencia con esto?
Saludos,
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
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
- Armando Picon
- Posts: 448
- Joined: Mon Dec 26, 2005 9:11 pm
- Location: Lima, Peru
Encontré el codigo para la clase tprinter.
/* Listar la base de datos del padron de productos
Autor: Econ. Armando Picón S., Lima, Perú
*/
#include "fivewin.ch"
#include "report.ch"
PROCEDURE listar( oDlg )
LOCAL nReg := 1
LOCAL Fil := 0 // aqui estuvo el error
LOCAL Col := 0
LOCAL nCol := 115 // columnas que tiene el papel
LOCAL nFil := 64 // filas que tiene el papel
LOCAL LstCol := 112 // ultima columna a utilizar
LOCAL LstFil := 59 // ultima fila para datos
LOCAL nFil1 := 0
LOCAL c, f, cMedio
LOCAL oFnt1, oFnt2, oFnt3, oPen1
*
LOCAL nPag := 0
LOCAL oPrn
LOCAL cDate := STR( DAY( DATE() )) + " de " + ;
sp_mes( MONTH( DATE() ) ) + " del " +;
str(Year(DATE()))
LOCAL TITULO:="LISTADO GENERAL DE REPUESTOS"
LOCAL nLongTit, nMedio
//LOCAL aPagos //:= {} // esto también fue error, no se utiliza
DBSELECTAREA("STOCK")
nReg := RECNO()
PRINTER oPrn PrEVIEW MODAL
oPrn:setup()
IF EMPTY(oPrn:hDC)
MsgStop("Impresora no lista","ATENTO")
RETURN NIL
ENDIF
* características del papel
oPrn:SetPage( 10 ) // Papel A4==>10
oPrn:SetLandScape() // Orientacion echada
* Factor de resolución para columnas y filas (para colocar los datos en su lugar)
c:= oPrn:nHorzRes()/nCol
f:= oPrn:nVertRes()/nFil
cMedio := INT(LstCol / 2) + 1
DEFINE FONT oFnt1 NAME "Sans Serif" SIZE 0,-16 OF oPrn
DEFINE FONT oFnt2 NAME "Sans Serif" SIZE 0,-12 OF oPrn
DEFINE FONT oFnt3 NAME "Sans Serif" SIZE 0,-9 OF oPrn
DBGOTOP()
DO WHILE !EOF()
DO CASE
CASE Fil == 0
oPrn:Startpage()
Fil++
Fil++
Fil++
Fil++
nPag := oPrn:nPage
oPrn:Say(Fil*f, (cMedio - ( LEN(TITULO)/2 ))*c, TITULO, oFnt2)
Fil++
Fil++
oPrn:Say(Fil*f, (cMedio - ( LEN(oApp:membrete)/2 ))*c, oApp:membrete, oFnt2)
Fil++
Fil++
* Linea separador de titulo - encabezados
oPrn:Line(Fil*f,000*c, Fil*f, LstCol*c)
nFil1 := Fil
Fil++
* cabecera de columnas
oPrn:Say(Fil*f, 001*c, "ANDM" , oFnt3 ) // ANDAMIO
oPrn:Say(Fil*f, 005*c, "CASL" , oFnt3 ) // CASILLA
oPrn:Say(Fil*f, 011*c, "CODIGO" , oFnt3 ) // CODIGO
oPrn:Say(Fil*f, 024*c, "PROC" , oFnt3 ) // PROCEDENCIA
oPrn:Say(Fil*f, 030*c, "NOMBRE" , oFnt3 ) // NOMBRE
oPrn:Say(Fil*f, 061*c, "UNIDAD" , oFnt3 ) // UNIDAD DE MEDIDA
oPrn:Say(Fil*f, 069*c, "PREC.VTA" , oFnt3 ) // PRECIO DE VENTA
oPrn:Say(Fil*f, 079*c, "DSCTO" , oFnt3 ) // DESCUENTO EN VALOR
oPrn:Say(Fil*f, 089*c, "IGV" , oFnt3 ) // IGV DE PRECIO-DCTO
oPrn:Say(Fil*f, 099*c, "PREC.PUBLICO.", oFnt3 ) // PRECIO FACTURADO
Fil++
oPrn:Say(Fil*f, 069*c, " US$ " , oFnt3 ) // PRECIO DE VENTA
oPrn:Say(Fil*f, 079*c, " US$ " , oFnt3 ) // DESCUENTO EN VALOR
oPrn:Say(Fil*f, 089*c, "US$" , oFnt3 ) // IGV DE PRECIO-DCTO
oPrn:Say(Fil*f, 099*c, " US$ ", oFnt3 ) // PRECIO FACTURADO
Fil++
Fil++
* Linea separadora entre encabezados e impresion de datos
oPrn:Line(Fil*f,000*c, Fil*f, LstCol*c)
Fil++
CASE Fil > LstFil
Fil++
* Linea de cierre de impresion de datos
oPrn:Line(Fil*f,000*c, Fil*f, LstCol*c)
* Linea verticales de impresion de datos
oPrn:Line(nFil1*f,000*c, Fil*f,000*c)
oPrn:Line(nFil1*f,005*c, Fil*f,005*c)
oPrn:Line(nFil1*f,009*c, Fil*f,009*c)
oPrn:Line(nFil1*f,022*c, Fil*f,022*c)
oPrn:Line(nFil1*f,028*c, Fil*f,028*c)
oPrn:Line(nFil1*f,059*c, Fil*f,059*c)
oPrn:Line(nFil1*f,067*c, Fil*f,067*c)
oPrn:Line(nFil1*f,077*c, Fil*f,077*c)
oPrn:Line(nFil1*f,087*c, Fil*f,087*c)
oPrn:Line(nFil1*f,097*c, Fil*f,097*c)
oPrn:Line(nFil1*f,LstCol*c, Fil*f,LstCol*c)
* Fin cuadro de impresion de datos
Fil++
oPrn:Say(Fil*f, 002*c, "Pag. No. : ", oFnt3 )
oPrn:Say(Fil*f, 014*c, ALLTRIM(STR(nPag,10,0)), oFnt3 )
Fil++
oPrn:endpage()
Fil := 0
OTHER
oPrn:Say(Fil*f, 002*c, STOCK->ANDAMIO, oFnt3 )
oPrn:Say(Fil*f, 006*c, STOCK->CASILLA, oFnt3 )
oPrn:Say(Fil*f, 010*c, STOCK->CODIGO , oFnt3 )
oPrn:Say(Fil*f, 023*c, STOCK->ORIG , oFnt3 )
oPrn:Say(Fil*f, 029*c, STOCK->NOMBRE , oFnt3 )
oPrn:Say(Fil*f, 060*c, STOCK->UNIDAD , oFnt3 )
oPrn:Say(Fil*f, 075*c, TRANSFORM(STOCK->XPRECIOV,"@ 99,999.999"), oFnt3,,,,1 ) // PRECIO DE VENTA
oPrn:Say(Fil*f, 085*c, TRANSFORM(STOCK->XDCTO ,"@ 99,999.999"), oFnt3,,,,1 ) // DESCUENTO EN VALOR
oPrn:Say(Fil*f, 095*c, TRANSFORM(STOCK->XIGV ,"@ 99,999.999"), oFnt3,,,,1 ) // IGV DE PRECIO-DCTO
oPrn:Say(Fil*f, 105*c, TRANSFORM(STOCK->XPRECIOF,"@ 999,999.99"), oFnt3,,,,1 ) // PRECIO FACTURADO
Fil++
SKIP
ENDCASE
ENDDO
*
Fil++
* Linea de cierre de impresion de datos
oPrn:Line(Fil*f,000*c, Fil*f, LstCol*c)
* Linea verticales de impresion de datos
oPrn:Line(nFil1*f,000*c, Fil*f,000*c)
oPrn:Line(nFil1*f,005*c, Fil*f,005*c)
oPrn:Line(nFil1*f,009*c, Fil*f,009*c)
oPrn:Line(nFil1*f,022*c, Fil*f,022*c)
oPrn:Line(nFil1*f,028*c, Fil*f,028*c)
oPrn:Line(nFil1*f,059*c, Fil*f,059*c)
oPrn:Line(nFil1*f,067*c, Fil*f,067*c)
oPrn:Line(nFil1*f,077*c, Fil*f,077*c)
oPrn:Line(nFil1*f,087*c, Fil*f,087*c)
oPrn:Line(nFil1*f,097*c, Fil*f,097*c)
oPrn:Line(nFil1*f,LstCol*c, Fil*f,LstCol*c)
* Fin cuadro de impresion de datos
Fil++
oPrn:Say(Fil*f, 002*c, "Pag. No. : ", oFnt3 )
oPrn:Say(Fil*f, 014*c, ALLTRIM(STR(nPag,10,0)), oFnt3 )
oPrn:endpage()
ENDPRINT
oFnt1:End()
oFnt2:End()
oFnt3:End()
oPrn:SetPortrait() // Orientacion parada
oPrn:End()
DBGOTOP()
DBGOTO( nReg )
RETURN
*
/*
Formulario de la lista Productos
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄ¿
³ANDM CASL CODIGO PROC NOMBRE UNIDAD PREC.VTA DSCTO IGV PREC.FACT.³³
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÙ
12 123 123456789012 12345 123456789012345678901234567890 1234567 12345.789 12345.789 12345.789 123457.89
01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012
1 2 3 4 5 6 7 8 9 0 1
Caracteristicas de la base de datos
=======================
Cliente----: 12345678901 123456789012345678901234567890123456789012345
Dirección--: 123456789012345678901234567890123456789012345
123456789012345678901234567890123456789012345
123456789012345678901234567890123456789012345
Teléfono---: 123456789012
Loc.Entrega: 123456789012345678901234567890123456789012345
Dirección--: 123456789012345678901234567890123456789012345
Teléfono---: 123456789012
------------------------------------------------------------------------
NOM_CLIENT" ,"C", 45,0},; // nombre del cliente
DIR_CLIENT" ,"C", 45,0},; // direccion1 del cliente
DIR_CLIEN2" ,"C", 45,0},; // direccion2 del cliente
DIR_CLIEN3" ,"C", 45,0},; // direccion3 del cliente
LOC_CLIENT" ,"C", 45,0},; // local de entrega
LOC_DIRCLI" ,"C", 45,0},; // direc. local de entrega
TF1_CLIENT" ,"C", 12,0},; // telefono cliente
TF2_CLIENT" ,"C", 12,0} ; // telefono local de entrega
*/
/* Listar la base de datos del padron de productos
Autor: Econ. Armando Picón S., Lima, Perú
*/
#include "fivewin.ch"
#include "report.ch"
PROCEDURE listar( oDlg )
LOCAL nReg := 1
LOCAL Fil := 0 // aqui estuvo el error
LOCAL Col := 0
LOCAL nCol := 115 // columnas que tiene el papel
LOCAL nFil := 64 // filas que tiene el papel
LOCAL LstCol := 112 // ultima columna a utilizar
LOCAL LstFil := 59 // ultima fila para datos
LOCAL nFil1 := 0
LOCAL c, f, cMedio
LOCAL oFnt1, oFnt2, oFnt3, oPen1
*
LOCAL nPag := 0
LOCAL oPrn
LOCAL cDate := STR( DAY( DATE() )) + " de " + ;
sp_mes( MONTH( DATE() ) ) + " del " +;
str(Year(DATE()))
LOCAL TITULO:="LISTADO GENERAL DE REPUESTOS"
LOCAL nLongTit, nMedio
//LOCAL aPagos //:= {} // esto también fue error, no se utiliza
DBSELECTAREA("STOCK")
nReg := RECNO()
PRINTER oPrn PrEVIEW MODAL
oPrn:setup()
IF EMPTY(oPrn:hDC)
MsgStop("Impresora no lista","ATENTO")
RETURN NIL
ENDIF
* características del papel
oPrn:SetPage( 10 ) // Papel A4==>10
oPrn:SetLandScape() // Orientacion echada
* Factor de resolución para columnas y filas (para colocar los datos en su lugar)
c:= oPrn:nHorzRes()/nCol
f:= oPrn:nVertRes()/nFil
cMedio := INT(LstCol / 2) + 1
DEFINE FONT oFnt1 NAME "Sans Serif" SIZE 0,-16 OF oPrn
DEFINE FONT oFnt2 NAME "Sans Serif" SIZE 0,-12 OF oPrn
DEFINE FONT oFnt3 NAME "Sans Serif" SIZE 0,-9 OF oPrn
DBGOTOP()
DO WHILE !EOF()
DO CASE
CASE Fil == 0
oPrn:Startpage()
Fil++
Fil++
Fil++
Fil++
nPag := oPrn:nPage
oPrn:Say(Fil*f, (cMedio - ( LEN(TITULO)/2 ))*c, TITULO, oFnt2)
Fil++
Fil++
oPrn:Say(Fil*f, (cMedio - ( LEN(oApp:membrete)/2 ))*c, oApp:membrete, oFnt2)
Fil++
Fil++
* Linea separador de titulo - encabezados
oPrn:Line(Fil*f,000*c, Fil*f, LstCol*c)
nFil1 := Fil
Fil++
* cabecera de columnas
oPrn:Say(Fil*f, 001*c, "ANDM" , oFnt3 ) // ANDAMIO
oPrn:Say(Fil*f, 005*c, "CASL" , oFnt3 ) // CASILLA
oPrn:Say(Fil*f, 011*c, "CODIGO" , oFnt3 ) // CODIGO
oPrn:Say(Fil*f, 024*c, "PROC" , oFnt3 ) // PROCEDENCIA
oPrn:Say(Fil*f, 030*c, "NOMBRE" , oFnt3 ) // NOMBRE
oPrn:Say(Fil*f, 061*c, "UNIDAD" , oFnt3 ) // UNIDAD DE MEDIDA
oPrn:Say(Fil*f, 069*c, "PREC.VTA" , oFnt3 ) // PRECIO DE VENTA
oPrn:Say(Fil*f, 079*c, "DSCTO" , oFnt3 ) // DESCUENTO EN VALOR
oPrn:Say(Fil*f, 089*c, "IGV" , oFnt3 ) // IGV DE PRECIO-DCTO
oPrn:Say(Fil*f, 099*c, "PREC.PUBLICO.", oFnt3 ) // PRECIO FACTURADO
Fil++
oPrn:Say(Fil*f, 069*c, " US$ " , oFnt3 ) // PRECIO DE VENTA
oPrn:Say(Fil*f, 079*c, " US$ " , oFnt3 ) // DESCUENTO EN VALOR
oPrn:Say(Fil*f, 089*c, "US$" , oFnt3 ) // IGV DE PRECIO-DCTO
oPrn:Say(Fil*f, 099*c, " US$ ", oFnt3 ) // PRECIO FACTURADO
Fil++
Fil++
* Linea separadora entre encabezados e impresion de datos
oPrn:Line(Fil*f,000*c, Fil*f, LstCol*c)
Fil++
CASE Fil > LstFil
Fil++
* Linea de cierre de impresion de datos
oPrn:Line(Fil*f,000*c, Fil*f, LstCol*c)
* Linea verticales de impresion de datos
oPrn:Line(nFil1*f,000*c, Fil*f,000*c)
oPrn:Line(nFil1*f,005*c, Fil*f,005*c)
oPrn:Line(nFil1*f,009*c, Fil*f,009*c)
oPrn:Line(nFil1*f,022*c, Fil*f,022*c)
oPrn:Line(nFil1*f,028*c, Fil*f,028*c)
oPrn:Line(nFil1*f,059*c, Fil*f,059*c)
oPrn:Line(nFil1*f,067*c, Fil*f,067*c)
oPrn:Line(nFil1*f,077*c, Fil*f,077*c)
oPrn:Line(nFil1*f,087*c, Fil*f,087*c)
oPrn:Line(nFil1*f,097*c, Fil*f,097*c)
oPrn:Line(nFil1*f,LstCol*c, Fil*f,LstCol*c)
* Fin cuadro de impresion de datos
Fil++
oPrn:Say(Fil*f, 002*c, "Pag. No. : ", oFnt3 )
oPrn:Say(Fil*f, 014*c, ALLTRIM(STR(nPag,10,0)), oFnt3 )
Fil++
oPrn:endpage()
Fil := 0
OTHER
oPrn:Say(Fil*f, 002*c, STOCK->ANDAMIO, oFnt3 )
oPrn:Say(Fil*f, 006*c, STOCK->CASILLA, oFnt3 )
oPrn:Say(Fil*f, 010*c, STOCK->CODIGO , oFnt3 )
oPrn:Say(Fil*f, 023*c, STOCK->ORIG , oFnt3 )
oPrn:Say(Fil*f, 029*c, STOCK->NOMBRE , oFnt3 )
oPrn:Say(Fil*f, 060*c, STOCK->UNIDAD , oFnt3 )
oPrn:Say(Fil*f, 075*c, TRANSFORM(STOCK->XPRECIOV,"@ 99,999.999"), oFnt3,,,,1 ) // PRECIO DE VENTA
oPrn:Say(Fil*f, 085*c, TRANSFORM(STOCK->XDCTO ,"@ 99,999.999"), oFnt3,,,,1 ) // DESCUENTO EN VALOR
oPrn:Say(Fil*f, 095*c, TRANSFORM(STOCK->XIGV ,"@ 99,999.999"), oFnt3,,,,1 ) // IGV DE PRECIO-DCTO
oPrn:Say(Fil*f, 105*c, TRANSFORM(STOCK->XPRECIOF,"@ 999,999.99"), oFnt3,,,,1 ) // PRECIO FACTURADO
Fil++
SKIP
ENDCASE
ENDDO
*
Fil++
* Linea de cierre de impresion de datos
oPrn:Line(Fil*f,000*c, Fil*f, LstCol*c)
* Linea verticales de impresion de datos
oPrn:Line(nFil1*f,000*c, Fil*f,000*c)
oPrn:Line(nFil1*f,005*c, Fil*f,005*c)
oPrn:Line(nFil1*f,009*c, Fil*f,009*c)
oPrn:Line(nFil1*f,022*c, Fil*f,022*c)
oPrn:Line(nFil1*f,028*c, Fil*f,028*c)
oPrn:Line(nFil1*f,059*c, Fil*f,059*c)
oPrn:Line(nFil1*f,067*c, Fil*f,067*c)
oPrn:Line(nFil1*f,077*c, Fil*f,077*c)
oPrn:Line(nFil1*f,087*c, Fil*f,087*c)
oPrn:Line(nFil1*f,097*c, Fil*f,097*c)
oPrn:Line(nFil1*f,LstCol*c, Fil*f,LstCol*c)
* Fin cuadro de impresion de datos
Fil++
oPrn:Say(Fil*f, 002*c, "Pag. No. : ", oFnt3 )
oPrn:Say(Fil*f, 014*c, ALLTRIM(STR(nPag,10,0)), oFnt3 )
oPrn:endpage()
ENDPRINT
oFnt1:End()
oFnt2:End()
oFnt3:End()
oPrn:SetPortrait() // Orientacion parada
oPrn:End()
DBGOTOP()
DBGOTO( nReg )
RETURN
*
/*
Formulario de la lista Productos
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄ¿
³ANDM CASL CODIGO PROC NOMBRE UNIDAD PREC.VTA DSCTO IGV PREC.FACT.³³
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÙ
12 123 123456789012 12345 123456789012345678901234567890 1234567 12345.789 12345.789 12345.789 123457.89
01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012
1 2 3 4 5 6 7 8 9 0 1
Caracteristicas de la base de datos
=======================
Cliente----: 12345678901 123456789012345678901234567890123456789012345
Dirección--: 123456789012345678901234567890123456789012345
123456789012345678901234567890123456789012345
123456789012345678901234567890123456789012345
Teléfono---: 123456789012
Loc.Entrega: 123456789012345678901234567890123456789012345
Dirección--: 123456789012345678901234567890123456789012345
Teléfono---: 123456789012
------------------------------------------------------------------------
NOM_CLIENT" ,"C", 45,0},; // nombre del cliente
DIR_CLIENT" ,"C", 45,0},; // direccion1 del cliente
DIR_CLIEN2" ,"C", 45,0},; // direccion2 del cliente
DIR_CLIEN3" ,"C", 45,0},; // direccion3 del cliente
LOC_CLIENT" ,"C", 45,0},; // local de entrega
LOC_DIRCLI" ,"C", 45,0},; // direc. local de entrega
TF1_CLIENT" ,"C", 12,0},; // telefono cliente
TF2_CLIENT" ,"C", 12,0} ; // telefono local de entrega
*/
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
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Armando,
Gracias por la contestación y ejemplo, pero lo que deseo es que fuera algo propio de la clase TPrinter para que se quede mas facil la previsualización en cualquier impresora con resolución diferente. Si hago reportes con TReport, el problema me aparece nuevamente y no hay nada que se pueda hacer.
Saludos,
Gracias por la contestación y ejemplo, pero lo que deseo es que fuera algo propio de la clase TPrinter para que se quede mas facil la previsualización en cualquier impresora con resolución diferente. Si hago reportes con TReport, el problema me aparece nuevamente y no hay nada que se pueda hacer.
Saludos,
Kleyber Derick
FWH / xHb / xDevStudio / SQLLIB
FWH / xHb / xDevStudio / SQLLIB
- Armando Picon
- Posts: 448
- Joined: Mon Dec 26, 2005 9:11 pm
- Location: Lima, Peru
Tienes razón... Habría que modificar la clase para darle las características que indicas.
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
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
- carlos vargas
- Posts: 1421
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
Bueno algo habia hecho similar, agregandolo a la clase tprinter unas datas y metodos mediante las extenciones de xharbour.
Tal vez habria que darle una revisada a este codigo y modificarlo para que haga lo que nos indica Armando.
Modificacion de clase tprinter
Implementacion de las data y methodos agregados.
salu2
carlos vargas
Tal vez habria que darle una revisada a este codigo y modificarlo para que haga lo que nos indica Armando.
Modificacion de clase tprinter
Code: Select all
...
EXTEND CLASS TPRINTER WITH METHOD Cm2Pix
EXTEND CLASS TPRINTER WITH METHOD OSay
EXTEND CLASS TPRINTER WITH DATA nPxL
EXTEND CLASS TPRINTER WITH DATA nPxC
...
Code: Select all
/*-------------------------------------------------------------------------------*/
STATIC FUNCTION Cm2Pix(nCm)
LOCAL SELF := HB_QSelf()
IF ValType( ::nXOffset ) == "U"
::nXoffset := 0
ENDIF
nPix := Max( 0, ( nCm * 10 * ::nHorzRes() / ::nHorzSize() ) - ::nXoffset )
RETURN nPix
/*-------------------------------------------------------------------------------*/
STATIC FUNCTION OSay(nRow,nCol,cText,oFont,nWidth,nClrText,nBkMode,nPad)
LOCAL SELF := HB_QSelf()
LOCAL nRowT := ::nPxL * nRow
LOCAL nColT := ::nPxC * nCol
LOCAL nWidT
DEFAULT nWidth := 0
nWidT := ::nPxC * nWidth
::Say(nRowT,nColT,OemToAnsi(cText),oFont,nWidT,nClrText,nBkMode,nPad)
RETURN NIL
/*-------------------------------------------------------------------------------*/
Code: Select all
/*-------------------------------------------------------------------------------*/
/*OK*/
PROCEDURE Contratos_ImprimirEstado()
LOCAL nLin := 0
LOCAL oPrn
LOCAL nPxL //pixel por linea
LOCAL nPxC //pixel por columna
LOCAL nRec := LOTE->(RecNo())
LOCAL nTamLin,nLineas,x
/*objeto print*/
PRINT oPrn NAME "Estado actual de contrato" PREVIEW MODAL
/*fuentes a usar*/
DEFINE FONT oFntNor NAME "Courier New" SIZE 0, -10 OF oPrn
DEFINE FONT oFntTit NAME "Courier New" SIZE 0, -10 OF oPrn BOLD
oPrn:setpage(1)
/*obtiene resolucion de impresora*/
nVer := oPrn:nVertRes()
nHor := oPrn:nHorzRes()
/*establece numero de lineas y columnas*/
nPxL := (nVer/66)
nPxC := (nHor/82)
/*pasa calculo a objeto tprinter*/
oPrn:nPxL := nPxL
oPrn:nPxC := nPxC
PAGE
oPrn:osay(01,02,"Fecha y Hora : "+DToC(Date())+"/"+Time(),oFntNor)
oPrn:osay(03,02,NOM_EMPRESA,oFntTit)
oPrn:osay(04,02,"ESTADO ACTUAL DE CONTRATO",oFntTit)
oPrn:osay(06,02,Replicate("=",91),oFntNor)
oPrn:osay(07,02,"Contrato : "+CONT->MC_CODCON,oFntNor)
oPrn:osay(07,40,"Estado : "+Upper(CONT->MC_ESTADO),oFntTit)
oPrn:osay(08,02,"Suscriptor : "+CONT->MC_NOMSUS,oFntNor)
oPrn:osay(09,02,"Domicilio : "+CONT->MC_DIRSUS,oFntNor)
oPrn:osay(10,02,"Trabajo : "+CONT->MC_DIRTRA,oFntNor)
oPrn:osay(11,02,"Tel‚fonos : "+RTrim(CONT->MC_TELDOM)+"/"+RTrim(CONT->MC_TELTRA),oFntNor)
oPrn:osay(12,02,"C‚dula : "+CONT->MC_CEDULA,oFntNor)
oPrn:osay(12,40,"Profesi¢n : "+CONT->MC_PROSUS,oFntNor)
oPrn:osay(13,02,"Fecha venta : "+DToC(CONT->MC_FECCON),oFntNor)
oPrn:osay(13,40,"Tasa cambio : "+Tran(CONT->MC_TASCAM,"C$99.9999"),oFntNor)
oPrn:osay(14,02,"Fecha naci. : "+DToC(CONT->MC_FECNAC),oFntNor)
oPrn:osay(14,40,"Edad : "+Tran(nEdad,"99 A¤os"),oFntNor)
oPrn:osay(15,02,"Estado civil: "+IIf(CONT->MC_CASADO,"CASADO(A)","SOLTERO(A)"),oFntNor)
oPrn:osay(15,40,"Tasa Interes: "+Tran(CONT->MC_PORINT,"99%"),oFntNor)
oPrn:osay(16,02,Replicate("=",91),oFntNor)
/*titulo de lotes*/
oPrn:osay(17,02,"LOTE NO.", oFntTit)
oPrn:osay(17,14,"JARDIN", oFntTit)
oPrn:osay(17,50,"BLOQUE", oFntTit)
oPrn:osay(17,60,"PRECIO U$",oFntTit)
nLin := 17
/*cambia puntero a tabla LOTES*/
DBSELECT "LOTE"
LOTE->(DBGoTop())
/*procesa cada lote del contrato*/
DO WHILE !LOTE->(Eof())
/*imprime datos de lotes*/
oPrn:osay(++nLin, 02, StrToken(LOTE->ML_CODLOT,3,"-"), oFntNor)
oPrn:osay( nLin, 14, JARD->MJ_NOMJAR, oFntNor)
oPrn:osay( nLin, 50, StrToken(LOTE->ML_CODLOT,2,"-"), oFntNor)
oPrn:osay( nLin, 60, Tran(LOTE->ML_PREVEN,"$99,999.99"),oFntNor)
LOTE->(DBSkip())
ENDDO
/*restaura puntero a tabla CONTRATOS*/
LOTE->(DBGoTop(nRec))
DBSELECT "CONT"
oPrn:osay(++nLin,02,Replicate("=",91),oFntNor)
/*imprime datos de valores*/
oPrn:osay(++nLin,02,"Valor de contrato U$:" + tran(CONT->MC_TOTCON, "999,999.99"),oFntNor)
oPrn:osay( nLin,40,"Valor de contrato C$:" + tran(CONT->MC_TOTCONC,"999,999.99"),oFntNor)
oPrn:osay(++nLin,02,"Valor de prima U$:" + tran(CONT->MC_PAGPRI, "999,999.99"),oFntNor)
oPrn:osay( nLin,40,"Valor de prima C$:" + tran(CONT->MC_PAGPRIC,"999,999.99"),oFntNor)
oPrn:osay(++nLin,02,"Saldo a pagar U$:" + tran(CONT->MC_SALFIN, "999,999.99"),oFntNor)
oPrn:osay( nLin,40,"Saldo a pagar C$:" + tran(CONT->MC_SALFINC,"999,999.99"),oFntNor)
oPrn:osay(++nLin,02,Replicate("-",91),oFntNor)
oPrn:osay(++nLin,02,"N£mero de cuotas: " + tran(CONT->MC_NUMCUO, "999"),oFntNor)
oPrn:osay( nLin,29,"Fecha 1er. pago: " + DToC(CONT->MC_DIAPAG),oFntNor)
oPrn:osay( nLin,55,"Valor abono U$:" + tran(CONT->MC_VALABO, "99,999.99"),oFntNor)
oPrn:osay(++nLin,02,Replicate("-",91),oFntNor)
oPrn:osay(++nLin,02,"Vendedor: " + VEND->MV_NOMVEN,oFntNor)
oPrn:osay( nLin,40,"Colector: " + COLE->MC_NOMCOL,oFntNor)
oPrn:osay(++nLin,02,Replicate("-",91),oFntNor)
oPrn:osay(++nLin,02,"Beneficiario #1: " + CONT->MC_BENSE1,oFntNor)
oPrn:osay(++nLin,02,"C‚dula #1: " + CONT->MC_BENCE1,oFntNor)
oPrn:osay(++nLin,02,"Beneficiario #2: " + CONT->MC_BENSE2,oFntNor)
oPrn:osay(++nLin,02,"C‚dula #2: " + CONT->MC_BENCE2,oFntNor)
oPrn:osay(++nLin,02,Replicate("-",91),oFntNor)
oPrn:osay(++nLin,02,"Titulo Numero: " + CONT->MC_NUMTIT,oFntNor)
oPrn:osay( nLin,40,"Fecha Emici¢n: " + DToC(CONT->MC_FECTIT),oFntNor)
oPrn:osay(++nLin,02,Replicate("=",91),oFntNor)
oPrn:osay(++nLin,02,"Esta Asegurado : " + IIf(CONT->MC_INISER,"SI","NO"),oFntNor)
oPrn:osay(++nLin,02,"Nombre de fiador: " + CONT->MC_NOMFIA,oFntNor)
oPrn:osay(++nLin,02,"Direccion : " + CONT->MC_DIRFIA,oFntNor)
oPrn:osay(++nLin,02,"Tel‚fono : " + CONT->MC_TELFIA,oFntNor)
oPrn:osay( nLin,40,"C‚dula: " + CONT->MC_CEDFIA,oFntNor)
oPrn:osay(++nLin,02,Replicate("=",91),oFntNor)
oPrn:osay(++nLin,02,"NOTAS:",oFntTit)
/*imeprime lineas de anotaci¢n*/
IF !Empty(CONT->MC_NOTAS)
nTamLin := 65
nLineas := MLCount(CONT->MC_NOTAS,nTamLin)
FOR x:=1 TO nLineas
oPrn:oSay(nLin+x,02,MemoLine(CONT->MC_NOTAS,nTamLin,x,,TRUE),oFntNor)
NEXT
ENDIF
ENDPAGE
ENDPRINT
RETURN
/*-------------------------------------------------------------------------------*/
carlos vargas
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Vargas
Desde Managua, Nicaragua (CA)
Hola Carlos,
Muy interesante tu ejemplo. Solo dos preguntas:
1 - ¿Como se quedaria con un ejemplo usando TReport?
2 - ¿No seria un poco mas sencillo cambiar el metodo CmSay() en la TPrinter para que funcione con todas las resoluciones?
Gracias y saludos,
Muy interesante tu ejemplo. Solo dos preguntas:
1 - ¿Como se quedaria con un ejemplo usando TReport?
2 - ¿No seria un poco mas sencillo cambiar el metodo CmSay() en la TPrinter para que funcione con todas las resoluciones?
Gracias y saludos,
Kleyber Derick
FWH / xHb / xDevStudio / SQLLIB
FWH / xHb / xDevStudio / SQLLIB
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Antonio
Saludos,
Gracias por tu contestación. Entonces me quedo aguardando la solución para esto y para cuando for usar la TReport también, pues no me gusta tener que usar herramientas de terceros.CmSay() debería imprimir en la misma posición exactamente. De no hacerlo es un bug que hay que corregir
Saludos,
Kleyber Derick
FWH / xHb / xDevStudio / SQLLIB
FWH / xHb / xDevStudio / SQLLIB
- Armando Picon
- Posts: 448
- Joined: Mon Dec 26, 2005 9:11 pm
- Location: Lima, Peru
Carlos
Es interesante la adaptación que señalas. ¿Puedo considerarlo en el futuro para mis desarrollos personales?
Saludos
Armando
Es interesante la adaptación que señalas. ¿Puedo considerarlo en el futuro para mis desarrollos personales?
Saludos
Armando
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
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Lo que yo hago es simple, tengo una funcion simplemente para PREVISUALIZAR y otra para imprimir.
Para el Preview uso: TPrint(Asi me olvido del modelo de la impresora)
-----------------------
Define Font oFont Name 'Arial' Size 16,25
Print oPrn Preview
Page
oprn:Say(10,10,'ejemplo',oFont)
EndPage
para Impresion directamente a Impresora uso: TdosPrn()
------------------------------------------------------
Para el Preview uso: TPrint(Asi me olvido del modelo de la impresora)
-----------------------
Define Font oFont Name 'Arial' Size 16,25
Print oPrn Preview
Page
oprn:Say(10,10,'ejemplo',oFont)
EndPage
para Impresion directamente a Impresora uso: TdosPrn()
------------------------------------------------------