Columnas en Tprinter

Columnas en Tprinter

Postby Pedro » Tue Sep 01, 2009 6:33 pm

Hola a todos
¿Hay alguna forma de saber qué posición ocuparía una columna de impresión (de aquellas que hacíamos en clipper) en la clase tprinter?
A modo de ejemplo si en clipper poníamos @ Prow() 15,40 me gustaría saber si de alguna manera se puede calcular que la columna 40 serían 10.5 cms, (claro está que hay que tener en cuenta el tipo de letra)
¿Hay alguna forma?
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Columnas en Tprinter

Postby ADBLANCO » Tue Sep 01, 2009 6:46 pm

Yo me 'fabrique' una función para continuar trabajando en 'lineas' y Centímetros
lo único que tiene es que los fonts estan predeterminados y el objeto oPrn es privado de la
función que construye la impresión; Pero puede servirte (creo) para hacer lo que necesitas.



Code: Select all  Expand view
***************************************************************************************
FUNCTION pSay3(nline,ncol,cTexto,nFont,nJust)
 * pSay3(Linea,Col,"texto",nroFont,nroJustificacion)
 * Linea: Coordenadas del Punto (en caracteres)
 * Col: Coordenadas del Punto (en ctm)
 * nroJustificacion: 1=>texto a la Izquierda del punto,2=>Centrada al punto,3=>Derecha del punto
 * NroFont 1 => Arial 10 bold
 * NroFont 2 => Arial 10
 * NroFont 3 => Arial  8 bold
 * NroFont 4 => Arial  8
 * NroFont 5 => Arial  6 bold
 * NroFont 6 => Arial  6
 // Solo para usar con salida()
***************************************************************************************
LOCAL nVert,nHorz,cFont:="oFont"+str(iif(nFont<7 .and. nFont>0,nFont,1),1)
  oPrn:setfont(&cFont )
  IF nFont<3
    nVert:=0.3939 //0.4
    nHorz:=0.26   //0.45
  ELSE
    nVert:=0.3939
    nHorz:=0.13
  ENDIF
  IF PCOUNT()=5
    oPrn:CmSay(nVert*nline+1,nCol,cTexto,&cFont ,,,,iif(nJust<4 .and. nJust>0,nJust,1))
  ELSE
    oPrn:CmSay(nVert*nline+1,nCol,cTexto,&cFont )
  ENDIF
  RETURN nil

 
Saludos

Angel, Valencia, Venezuela

xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
User avatar
ADBLANCO
 
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Re: Columnas en Tprinter

Postby Pedro » Tue Sep 01, 2009 9:27 pm

Hola Angel
Gracias por contestar pero creo que no me has entendido, en tu función, tú ya mandas en cms, lo que yo quiero buscar en esa medida.
Si recuerdas, en clipper cuando enviábamos a imprimir, @ Prow()+1 , 09 Say TRANSF(SER->codigo,"999") ese 09 en negritas es una columna, pero no está en cms, y es lo que yo preguntaba. ¿Cómo puedo saber a qué cms corresponde esa columna 09?
Las líneas no me preocupan, la verdad que con una separación de 0.4 cms van de maravilla, pero las columnas se me atragantan demasiado, de ahí que pidiera si alguien ha hecho alguna función o algún cálculo para saber, como decía antes en el ejemplo que puse, que no era otro que la mitad de una impresión de 80 columnas, a la cual sabemos que normalmente corresponden unos 210 mm de ancho aproximadamente.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Columnas en Tprinter

Postby ADBLANCO » Tue Sep 01, 2009 9:49 pm

Ok, ya entiendo, pero yo al final abandoné esa idea y convertí todo a cm.
EL problema es que la mayoría de los fonts son proporcionales, entonces se hace casi imposible conseguir que cuadre
Saludos

Angel, Valencia, Venezuela

xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
User avatar
ADBLANCO
 
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Re: Columnas en Tprinter

Postby Armando » Tue Sep 01, 2009 10:20 pm

Pedro:

A ver si este código te sirve, al menos para darte la idea.

Esto se hace con TPrinter no con TReport.

En la clase TPrinter hay dos métodos clave:

oPrn:nVertRes() y
oPrn:nHorzRes()

Seguramente ya adivinaste, se trata de los pixeles que hay en forma VERTICAL y HORIZONTAL respectivamente en el objeto Printer o oPrn.

Entonces teniendo estos dos valores y definiendo la cantidad de renglones y columnas que queremos que oPrn tenga podemos calcular cuantos pixeles tendrá cada renglón y columna, veamos un ejemplo:

Si queremos que nuestro objeto tenga 66 renglones o filas y 110 columnas bastaría con una simple división:

nCtdPixRen := oPrn:nVertRes() / 66
nCtdPixCol := oPrn:nHorzRes() / 110

Con estos valores si deseas hacer referencia a la fila 5, columna 8 sería algo tan sencillo como esto:

@ SAY (nCtdPixRen * 5),(nCtdPixCol * 8) etc etc

Espero esto sea lo que necesitas.

Saludos
Last edited by Armando on Wed Sep 02, 2009 2:16 pm, edited 1 time in total.
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: 3084
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Columnas en Tprinter

Postby ADBLANCO » Wed Sep 02, 2009 12:48 pm

El problema con esto último es que la impresión no mantiene siempre el mismo aspecto en todas las impresoras, te va a variar dependiendo de la resolución y forma de imprimir (por ejemplo: Apaisada).

Por eso terminé trabajando en Cm, además es muy facil cuando estás convirtiendo viejos sistemas de clipper, en el cual ya tienes impresiones anteriores, solo tienes que medir y Ya.
Saludos

Angel, Valencia, Venezuela

xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
User avatar
ADBLANCO
 
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela


Return to FiveWin para Harbour/xHarbour

Who is online

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