Sobre TReport e Imagenes Impresas

Post Reply
User avatar
cuatecatl82
Posts: 614
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Sobre TReport e Imagenes Impresas

Post by cuatecatl82 »

Saludos a todos los Colegas del foro:

Tengo una duda sobre la clase TReport en la cual esta basada mi aplicaciòn, en ella muestro listados con imagenes con vistas previas en diferentes tipos de impresora: Laser, matriz de Puntos e Inyecciòn de tinta, mi pregunta es:

Es posible saber en que tipo de Impresora se esta generando el previewy el reporte, ya que con los diferentes tipos de impresoras las images se ven de diferente forma, mi idea es saber en que momento es laser u otro modelo para cambiar el tamaño y la ubicaciòn de la imagen para que no quede asì:

Laser:
<a href="http://img143.imageshack.us/my.php?imag ... 719tw9.jpg" target="_blank"><img src="http://img143.imageshack.us/img143/2391 ... tw9.th.jpg" border="0" alt="Free Image Hosting at www.ImageShack.us" /></a>

Matriz de Puntos:
<a href="http://img143.imageshack.us/my.php?imag ... 568wd6.jpg" target="_blank"><img src="http://img143.imageshack.us/img143/3457 ... wd6.th.jpg" border="0" alt="Free Image Hosting at www.ImageShack.us" /></a>

Saludos y Gracias..
User avatar
cuatecatl82
Posts: 614
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Post by cuatecatl82 »

Sorry creo que las imagenes no se ven..

Estos son los enlazes correctos:

http://img177.imageshack.us/img177/370/ ... my0.th.jpg
http://img177.imageshack.us/img177/6848 ... jz2.th.jpg
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Dany,

La Clase TReport contiene una DATA oDevice que es el dispositivo en el que se va a imprimir.

Puedes usar estos métodos:
<oReport>:PhyWidth(), <oReport>:PhyHeight()

ó directamente consultar a oDevice:
::nWidth := ::oDevice:nHorzRes()
::nHeight := ::oDevice:nVertRes()
::nLogPixX := ::oDevice:nLogPixelX()
::nLogPixY := ::oDevice:nLogPixelY()
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Patricio Avalos Aguirre
Posts: 1028
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile
Contact:

Post by Patricio Avalos Aguirre »

Dany

Yo lo hago de la siguiente manera

Code: Select all

	if file( "imagen\vehiculo.bmp" )
		aRowCol := oPrn:Cmtr2Pix(nFila,6)
		aSize :=   oPrn:Cmtr2Pix(10,12)
		oPrn:SayBitmap( aRowCol[1], aRowCol[2], "imagen\vehiculo.bmp", aSize[2], aSize[1] )
	endif
espero que te sirva
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
User avatar
cuatecatl82
Posts: 614
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Post by cuatecatl82 »

Gracias a ambos por contesta ya estoy probando ambas opciones, algo he de sacar de provecho..

Si de plano no doy con esto me comunico de nuevo al foro..

Saludos y de Nuevo Gracias de antemano...
User avatar
cuatecatl82
Posts: 614
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Post by cuatecatl82 »

De nuevo aki molestando:

Patricio Avalos Aguirre:

Solo tengo una duda: donde tomo el valor de nFila en:
aRowCol := oRep:Cmtr2Pix(nFila,6)

Ya que al momento de generar el reporte truena porque no reconoce a esta variable..

Gracias..
User avatar
Patricio Avalos Aguirre
Posts: 1028
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile
Contact:

Post by Patricio Avalos Aguirre »

Dany

Yo utilizo PRINT

Code: Select all

PRINT oPrn PREVIEW MODAL TO (ViewUsu():ordentrabajo)
y la varialble nFila es la posición de la Fila

te muestro todo el modulo para que lo veas, la imagen funciona en cualquier impresora, tanto en laser como en matriz

Code: Select all

static Procedure PrnOT()
local oPrn, aFont[6], nFila, nRow, nCantLine, n, nTmp, aRowCol, aSize

if !MsgYesNo( "Desea imprimir OT" , "Usuario" )
	return
endif

PRINT oPrn PREVIEW MODAL TO (ViewUsu():ordentrabajo)
   DEFINE FONT aFont[1] NAME "COURIER NEW" 			SIZE 0, -8 		  OF oPrn
   DEFINE FONT aFont[2] NAME "COURIER NEW" 			SIZE 0, -10 	  OF oPrn
	DEFINE FONT aFont[3] NAME "ABADI MT CONDENSED" SIZE 0, -10 	BOLD OF oPrn
   DEFINE FONT aFont[4] NAME "COURIER NEW" 			SIZE 0, -8 	BOLD OF oPrn
	DEFINE FONT aFont[5] NAME "COURIER NEW" 			SIZE 0, -9 	BOLD OF oPrn
	DEFINE FONT aFont[6] NAME "COURIER NEW" 			SIZE 0, -8 	BOLD UNDERLINE OF oPrn

	oPrn:SetPage(1)
   oPrn:cDocument := "Impresión orden de trabajo"
	oPrn:StartPage()

	oPrn:CmSay(0.7,1.5, "   WIN-INVENT", aFont[4] )
	oPrn:CmSay(1.0,1.5, Parame->Nom_emp,aFont[4] )
	oPrn:CmSay(1.0,15, "Fecha:"+dtoc(DateAds()),aFont[1] )
	oPrn:CmSay(1.3,1.5, Parame->Dir_Emp ,aFont[1] )
	oPrn:CmSay(1.3,15, "Hora :"+TimeAds(),aFont[1])
	oPrn:CmSay(1.6,1.5, Parame->Ciu_Emp, aFont[1] )
	oPrn:CmSay(1.9,1.5, Parame->Fon_Emp, aFont[1] )

	oPrn:CmSay(2.2,8, "ORDEN DE TRABAJO ("+ upper(ALLTRIM(Ot2Tipo( Docu_OT->Tip_OT )) ) + "  Nº " + Alltrim(Docu_OT->Num_OT)+")", aFont[3] )

	nFila := 3.5
	nRow  := 1.7

	oPrn:CmSay( nFila, 1.5, "Datos del Cliente", aFont[6] )
	oPrn:CmSay( nFila, 11.5, "Datos del Vehículo", aFont[6] ) ; nFila += .4

	oPrn:CmSay( nFila, nRow, "Rut         " + ":"+nRutVer(Docu_Ot->Rut_Cli), aFont[1] )

	if Docu_Ot->Sto_Cli > 0
		oPrn:CmSay( nFila, 11.7, "Nº Stock    " + ":"+ltrim(Str(Docu_Ot->Sto_Cli)), aFont[1] ) ; nFila += .3
	else
		oPrn:CmSay( nFila, 11.7, "Patente     " + ":"+Patente->Num_Pat, aFont[1] ) ; nFila += .3
	endif

	oPrn:CmSay( nFila, nRow, "Razon social" + ":"+Clientes->Nombre, aFont[1] )

	if Docu_Ot->Sto_Cli > 0
		oPrn:CmSay( nFila, 11.7, "Modelo      " + ":"+NumStock->Des_Stock, aFont[1] ) ; nFila += .3
	else
		oPrn:CmSay( nFila, 11.7, "Modelo      " + ":"+Patente->Modelo, aFont[1] ) ; nFila += .3
	endif

	oPrn:CmSay( nFila, nRow, "Dirección   " + ":"+Clientes->Dir_Cli,aFont[1] )

	if Docu_Ot->Sto_Cli > 0
		oPrn:CmSay( nFila, 11.7, "            " + "              ",	 aFont[1] ) ; nFila += .3
	else
		oPrn:CmSay( nFila, 11.7, "Vim         " + ":"+Patente->Vin,	 aFont[1] ) ; nFila += .3
	endif

	oPrn:CmSay( nFila, nRow, "Ciudad      " + ":"+VerTabla( "CIU"+Clientes->Ciu_Cli),aFont[1] )

	oPrn:CmSay( nFila, 11.7, "Kilometraje " + ":"+ltrim(str(Docu_Ot->KM_Cli)), aFont[1] ) ; nFila += .5

	oPrn:CmSay( nFila, 1.5, "Estado del vehículo (observaciones)", aFont[6] )
	oPrn:CmSay( nFila, 11.5, "Detalle del servicio", aFont[6] ) ; nFila += .4

	nTmp := nFila

	nCantLine := MlCount( Docu_OT->Estado_Veh, 45 )

	for n = 1 to nCantLine
		oPrn:CmSay( nFila, nRow, MemoLine( Docu_OT->Estado_Veh,45,n ), aFont[1] )
		if !empty( MemoLine( Docu_OT->Estado_Veh,45,n) )
			nFila += .3
		endif
	next

	nRow := 11.7
	nCantLine := MlCount( Docu_OT->Detalle_Ve, 50 )

	for n = 1 to nCantLine
		oPrn:CmSay( nTmp, nRow, MemoLine( Docu_OT->Detalle_Ve,50,n), aFont[1] )
		if !empty( MemoLine( Docu_OT->Detalle_Ve,50,n) )
			nTmp += .3
		endif
	next

	nFila := MAX( nFila, nTmp )
	nRow := 1.7
	nFila += .5

	oPrn:CmSay( nFila, 1.5, "**Accesorios del Vehiculo**", aFont[6] )
	oPrn:CmSay( nFila,11.5, "**Nivel de Bencina**", aFont[6] )	; nFila += .5

	oPrn:CmSay( nFila, 1.7, "Documentos   ["+iif( Docu_OT->Documento, "SI", "NO" ) + "]", aFont[1] )
	oPrn:CmSay( nFila, 5.5, "Triangulos     ["+iif( Docu_OT->Triangulo, "SI", "NO" ) + "]", aFont[1] )
	oPrn:CmSay( nFila,11.7, iif( Docu_Ot->Nivel_Benc = 1, "1/4",;
									iif( Docu_Ot->Nivel_Benc = 2, "1/4 - 1/2",;
									iif( Docu_Ot->Nivel_Benc = 3, "1/2 - 3",;
									iif( Docu_Ot->Nivel_Benc = 4, "3/4+", "" ) ) ) ), aFont[1] ) ; nFila += .5


	oPrn:CmSay( nFila, 1.7, "Llaves       ["+iif( Docu_OT->Llaves, "SI", "NO" ) + "]", aFont[1] )
	oPrn:CmSay( nFila, 5.5, "Rueda Repuesto ["+iif( Docu_OT->Rueda_Rep, "SI", "NO" ) + "]", aFont[1] )
	oPrn:CmSay( nFila,11.5, "**Cargo Orden de Trabajo**", aFont[6] )  ; nFila += .5

	oPrn:CmSay( nFila, 1.7, "Espejo Int.  ["+iif( Docu_OT->Espejo_In, "SI", "NO" ) + "]", aFont[1] )
	oPrn:CmSay( nFila, 5.5, "Gata           ["+iif( Docu_OT->Gata, "SI", "NO" ) + "]", aFont[1] )
	oPrn:CmSay( nFila, 11.7, iif( Docu_Ot->Cargo_OT = 1, "Cliente",;
									 iif( Docu_Ot->Cargo_OT = 2, "Cia.Seguro",;
									 iif( Docu_Ot->Cargo_OT = 3, "E.Garantía",;
									 iif( Docu_Ot->Cargo_OT = 4, "Otro Cliente", "" ) ) ) ), aFont[1] ) ; nFila += .5


	oPrn:CmSay( nFila, 1.7, "Espejo Ext.  ["+iif( Docu_OT->Espejo_Ex, "SI", "NO" ) + "]", aFont[1] )
	oPrn:CmSay( nFila, 5.5, "Herramientas   ["+iif( Docu_OT->Herramien, "SI", "NO" ) + "]", aFont[1] )
	oPrn:CmSay( nFila, 11.5, "**Fecha y Hora Ingreso Taller**", aFont[6] ) ; nFila += .5

	oPrn:CmSay( nFila, 1.7, "Plumillas    ["+iif( Docu_OT->Plumillas, "SI", "NO" ) + "]", aFont[1] )
	oPrn:CmSay( nFila, 5.5, "Cint.Seguridad ["+iif( Docu_OT->Cint_Segur, "SI", "NO" ) + "]", aFont[1] )// ; nFila += .5
	oPrn:CmSay( nFila,11.7, Dtoc( Docu_OT->Fec_OT ) + " / " + Docu_Ot->Hora, aFont[1] ) ; nFila += .5

	oPrn:CmSay( nFila, 1.7, "Pisos        ["+iif( Docu_OT->Pisos, "SI", "NO" ) + "]", aFont[1] )
	oPrn:CmSay( nFila, 5.5, "Tapa bencina   ["+iif( Docu_OT->Tapa_Benc, "SI", "NO" ) + "]", aFont[1] )
	oPrn:CmSay( nFila, 11.5, "**Compromiso de entrega**", aFont[6] ) ; nFila += .5

	oPrn:CmSay( nFila, 1.7, "Tapa Radiador["+iif( Docu_OT->Tapa_radia, "SI", "NO" ) + "]", aFont[1] )
	oPrn:CmSay( nFila, 5.5, "Tapa Rueda 1234["+iif( Docu_OT->Tapa_Rueda, "SI", "NO" ) + "]", aFont[1] )
	oPrn:CmSay( nFila,11.7, Dtoc( Docu_OT->Fec_Ent ) + " / " + Docu_Ot->Hora_Ent, aFont[1] ) ; nFila += .5

	oPrn:CmSay( nFila, 1.7, "Extintor     ["+iif( Docu_OT->Extintor, "SI", "NO" ) + "]", aFont[1] )
	oPrn:CmSay( nFila, 5.5, "Encendedor     ["+iif( Docu_OT->Encendedor, "SI", "NO" ) + "]", aFont[1] ) ; nFila += .5

	oPrn:CmSay( nFila, 1.7, "Botiquin     ["+iif( Docu_OT->Botiquin, "SI", "NO" ) + "]", aFont[1] )
	oPrn:CmSay( nFila, 5.5, "Antena         ["+iif( Docu_OT->Antena, "SI", "NO" ) + "]", aFont[1] ) ; nFila += .8

	if file( "imagen\vehiculo.bmp" )
		aRowCol := oPrn:Cmtr2Pix(nFila,6)
		aSize :=   oPrn:Cmtr2Pix(10,12)//m->x,m->y)
		oPrn:SayBitmap( aRowCol[1], aRowCol[2], "imagen\vehiculo.bmp", aSize[2], aSize[1] )//3000, 2000 )//m->x1, m->x2 )
	endif

	oPrn:CmSay( 25, 6.5, "   CLIENTE  ", aFont[6] )
	oPrn:CmSay( 25, 11.5, "  RECEPCIONISTA  ", aFont[6] )

	oPrn:EndPage()

ENDPRINT

aEval( aFont, { |x| x:End() } )

return
//--------------------------------------------------------------------------------------------------------


Espero que te sirva
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
User avatar
cuatecatl82
Posts: 614
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Post by cuatecatl82 »

Gracias Patricio Avalos Aguirre, intentare con tu propuesta.
Muchas gracias..
Post Reply