Imprimir un texto centrado

Imprimir un texto centrado

Postby Rafael Clemente » Wed Jan 04, 2006 4:34 pm

Estoy utilizando una impresora laser de 600 dpi. ¿Cómo puedo imprimir una linea de texto centrada horizontalmente en la página? Algo así como el PADC() pero que funcione en pixels y que tenga en cuenta el tamaño del font que uso

DEFINE FONT oFont3 NAME "TIMES NEW ROMAN" OF oPr SIZE 0,-30
oPr:Say( 30, 0, "MI TEXTO EN LETRA GRANDE", oFont3, CLR_BLACK)

Gracias,

Rafael
User avatar
Rafael Clemente
 
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Re: Imprimir un texto centrado

Postby Fco_Ozuna » Wed Jan 04, 2006 8:10 pm

Hola Rafael.

Hace tiempo yo hice la misma pregunta que amablemente me contesto Marcelo Via Giglio, en la que me explico que depende del ancho del quinto parametro <oPrn>:Say( <nRow>, <nCol>, <cText>, <oFont>, <nWidth>, <nClrText>, <nBkMode>, <nPad> ) , pero como muchas cosas, buscandole y haciendo pruebas di con esto con la fuente "Times New Roman" Size 0.0 ,-8 que es la que yo necesitaba, y el ancho que le di fue de 5000,no se si sean pixels o que, y en el ultimo parametro el de centrar, asi me quedo:

::oPrn:CmSay(9,0,"TEXTO A CENTRAR",::oFont10,5000,,,2 ) // 1

para otra fuente pues hay que buscarle con otro ancho, espero que te sirva de algo.

si alguien me puede ampliar mi poco entendiiento se lo agradecieria.

fco_ozuna@prodigy.net.mx
Fco_Ozuna
 
Posts: 14
Joined: Sun Nov 27, 2005 2:49 am
Location: Nogales, Sonora

Postby Rafael Clemente » Thu Jan 05, 2006 12:15 am

Gracias, Francisco.

Yo no sabía que Say() admitía un octavo parámetro. Con tu información me ha funcionado perfectamente.

Por si te sirve, yo uso Say(), no cmSay. Say() funciona en pixeles. El quinto parámetro indica la anchura del rectángulo en cuyo interior se centra el texto. En mi caso, uso 4800 (8 pulgadas x 600 dpi = 4800)

No sé si tu 5000 es excesivo. Si cmSay() funciona en cmts, estás centrando tu texto en un rectángulo de 5 metros!!! Pero no estoy seguro; no lo he probado.

Gracias por tu ayuda,

Rafael
User avatar
Rafael Clemente
 
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Postby R.F. » Thu Jan 05, 2006 12:34 am

Exactametne eso iba a comentar yo.

Pero para mas seguro:

oPrinter:GetPhyWidth(), retorna el ancho físico del la hoja
Saludos
R.F.
R.F.
 
Posts: 840
Joined: Thu Oct 13, 2005 7:05 pm

Re: Imprimir un texto centrado

Postby Fco_Ozuna » Thu Jan 05, 2006 4:24 am

Gracias Rafael y Rene, que bonito trabajar así, como se aprenden cosas nuevas.

Y si yo tampoco entiendo porque el CmSay en el quinto parámetro no toma en cuenta la conversión a Cm, pero así funciona, yo lo deje en 5000 porque estuve probando +- 500 y con esta información de 600 dpi x 8 pulgadas que da 4800, pues queda mejor centrada, y para no fallarle con el tipo de resolución de la impresora vi este método: <oPrn>:nHorzRes, que nos regresa la resolución horizontal expresada en pixels, que es lo que se necesita: con una resolución de 300 dpi nos da 2400, con 600 dpi nos da 4800, con 1200 dpi nos da 9600, etc.. Todo esto con 8 pulgadas de ancho, y para no tener sorpresas a la hora de la hora, así lo puse y funciona perfectamente.


::oPrn:CmSay(9,0,"TEXTO A CENTRAR",::oFont10,::oPrn:nHorzRes,,,2 )

Gracias por su informacion.

Francisco
Fco_Ozuna
 
Posts: 14
Joined: Sun Nov 27, 2005 2:49 am
Location: Nogales, Sonora

Postby Fco_Ozuna » Thu Jan 05, 2006 4:33 am

Gracias Rafael y Rene, que bonito trabajar así, como se aprenden cosas nuevas.

Y si yo tampoco entiendo porque el CmSay en el quinto parámetro no toma en cuenta la conversión a Cm, pero así funciona, yo lo había dejado así en 5000 porque estuve probando +- 500, y con esta información de 600 dpi x 8 pulgadas que da 4800, pues queda mejor centrada, y para no fallarle con el tipo de resolución de la impresora vi este método: <oPrn>: nHorzRes que nos regresa la resolución horizontal expresada en pixels, que es lo que se necesita.

Con una resolución de 300 dpi nos da 2400
600 dpi nos da 4800
1200 dpi nos da 9600, etc..

Todo esto con 8 pulgadas de ancho, y para no tener sorpresas a la hora de la hora, así lo puse y funciona perfectamente para cualquier resolución de la impresora.

::oPrn:CmSay(5,0,"TEXTO EN CUALQUIER TAMAÑO",::oFont10,::oPrn:nHorzRes,,,2 )

Gracias por la información. :D

Francisco
Fco_Ozuna
 
Posts: 14
Joined: Sun Nov 27, 2005 2:49 am
Location: Nogales, Sonora

Postby Fco_Ozuna » Thu Jan 05, 2006 4:46 am

:oops: Disculpen tenia mal la fecha. en el reloj de mi computadora y no vi posteado el primer mensaje y lo volví a escribir otra vez.

Francisco
Fco_Ozuna
 
Posts: 14
Joined: Sun Nov 27, 2005 2:49 am
Location: Nogales, Sonora


Return to FiveWin para Harbour/xHarbour

Who is online

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