Page 1 of 2

impresión de gráfica

Posted: Fri Nov 21, 2014 2:50 am
by Renegado
Saludos a todos, quisiera saber si se puede dar un tamaño especifico a la gráfica que se imprime, porque en la ventana dónde se genera sé que si se puede, pero al imprimir ocupa mucha página y eso me preocupa porque es mucha tinta.
Gracias.

Impresión de gráfica

Posted: Fri Nov 21, 2014 11:10 am
by Pablo César
La directiva de PRINT GRAPH nos lleva a la funcion PrintGraph donde justamente prepara las coordenadas para el tamaño del gráfico en el plano donde se lo desea. Y lo hace atravéz de aLocation := _HMG_SYSDATA [ 108 ] [ GetFormIndex (cWindowName ) ] en el archivo C:\hmg.3.3.1\SOURCE\Graph\h_graph.prg, después llama el PrintWindow con las coordenadas que fué conseguida en aLocation. Si hubiera forma de poder interactuar en esas coordenadas seria posible cumplir con tu necesidad. Talvez consigas si llamas el PrintWindow, haciendo tu própio funcion PrintGraph.

Por otro lado, cuando estás creando DRAW GRAPH para exibirlo en la pantalla, está usando atravez de la directiva la funcion GraphShow. Y es aqui donde el aLocation puede ser modificado partiendo de las coordenas guardadas en _HMG_SYSDATA [ 108 ]. Entonces es en la declaracion DRAW GRAPH que contiene los parametros (Row,Col,Width,Height). Estes ultimos 2 parametros es atravéz de la propiedad "TO" fijate:
Screen1.png
Screen1.png (14.96 KiB) Viewed 3512 times
Aqui ves que fueron alterados los parametros (Row,Col,Width,Height) baseandote en el ejemplo C:\hmg.3.3.1\SAMPLES\Controls\Graph\GRAPH_04\demo.prg

Espero que hayas conseguido entender las explicacion. Tenemos todos en nuestras manos, basta hechar una miradita al source code del HMG.

Obs.: Siempre es bueno disponibilizar un código ejemplo. Es muy fustrante basearse en poquisima informacion cuando piden ayuda... :(

Re: Impresión de gráfica

Posted: Fri Nov 21, 2014 4:55 pm
by Javier Tovar
Pablo César wrote:
Obs.: Siempre es bueno disponibilizar un código ejemplo. Es muy fustrante basearse en poquisima informacion cuando piden ayuda... :(
+10

Re: impresión de gráfica

Posted: Sat Nov 22, 2014 12:46 am
by Renegado
Saludos Pablo Cesar y Javier Tovar, claro que entendí, gracias; lo que muestra en ese código es lo primero que hice pero solo me modifica la imagen en la ventana m, y creame que, lo que después se me ocurrió fué hacer un saveform (BosTaurus del Dr. Claudio Soto) porque a parte necesito imprimir una tabulación. Y supuse mal, pense que con mostrar la imagen los iba a referir a... precisamente ese código GRAPH_4, mil disculpas. Es mi costubre y mi trabajo leer o investigar antes de preguntar, solo que no encontré algo que me llevará de forma inmediata a mi solución y apoyandome en la gran experiencia que tienen se me hizo fácil preguntar. Para mi esto es un excelente y maravilloso pasatiempo, no vivo de ello, Reitero mi disculpa si le quite mucho de su valioso tiempo. Bendiciones.

Re: impresión de gráfica

Posted: Sun Nov 23, 2014 7:07 pm
by Renegado
Gracias, por fin ya lo tengo, quedo el reporte a mi gusto :D Saludos a todos.

Re: impresión de gráfica

Posted: Sun Nov 23, 2014 7:52 pm
by Pablo César
Renegado wrote:Gracias, por fin ya lo tengo, quedo el reporte a mi gusto :D Saludos a todos.
Qué bueno! Puedes decirnos como los solucionaste ?

Re: impresión de gráfica

Posted: Sun Nov 23, 2014 9:09 pm
by Javier Tovar
Muy bien Renegado!

+1

Saludos

Re: impresión de gráfica

Posted: Mon Nov 24, 2014 12:02 am
by Renegado
Claro, no fue gran cosa, solo grabé el área de la grafica:

en el código graph_04 coloqué esta linea
m.Capture((GetStartUpFolder() + "\grafica.bmp"),120,120,280,350)

y después solo llamé el archivo de imagen con el tamaño deseado en mi codigo de reporte.

Code: Select all

function showpie()
ERASE WINDOW m
DRAW GRAPH IN WINDOW m AT 120,120;
      TO 450,400 ;
      TITLE "Reporte de Asistencia" ; 
      TYPE PIE;
      SERIES series1;  
		DEPTH 25;
		SERIENAMES {"Alum. que nunca faltan","Alum. que a veces faltan","Alum. que faltan con frecuencia"};
		COLORS {{128,0,128},{255,0,0},{0,255,0}}; 
		3DVIEW;
		SHOWXVALUES; 
		SHOWLEGENDS NOBORDER
		
m.Capture((GetStartUpFolder() + "\grafica.bmp"),120,120,280,350)
return nil

Re: impresión de gráfica

Posted: Mon Nov 24, 2014 1:21 am
by Javier Tovar
Buena idea!

Saludos

Re: impresión de gráfica

Posted: Mon Nov 24, 2014 11:33 am
by Pablo César
Renegado wrote:solo grabé el área de la grafica:

en el código graph_04 coloqué esta linea
m.Capture((GetStartUpFolder() + "\grafica.bmp"),120,120,280,350)

y después solo llamé el archivo de imagen con el tamaño deseado en mi codigo de reporte.
Gracias por compartir ! Simples y funcional.

En Minigui Extended, el PRINT GRAPH tiene como pasar los parámetros:

Code: Select all

#xcommand PRINT GRAPH				;
		IN WINDOW <window>		;
		AT <nT>,<nL>			;
		[ TO <nB>,<nR> ]		;
		[ WIDTH <nW> ]			;
		[ HEIGHT <nH>	]		;
		[ TITLE <cTitle> ]		;
		TYPE <nType>			;
		SERIES <aSer>			;
		YVALUES <aYVal>			;
		DEPTH <nD>			;
		[ BARWIDTH <nW> ]		;
		[ BARSEPARATOR <nSep> ]		;
		HVALUES <nRange>		;
		SERIENAMES <aName>		;
		COLORS <aColor>			;
		[ <l3D : 3DVIEW> ]		;
		[ <lGrid : SHOWGRID> ]		;
		[ <lxGrid : SHOWXGRID> ]	; 
		[ <lyGrid : SHOWYGRID> ]	; 
		[ <lxVal : SHOWXVALUES> ]	; 
		[ <lyVal : SHOWYVALUES> ]	; 
		[ <lSLeg : SHOWLEGENDS> ]	; 
		[ <lViewVal : SHOWDATAVALUES> ]	; 
		[ DATAMASK <mask> ]		; 
		[ LEGENDSWIDTH <nLegendsWidth> ];
		[ LIBRARY <clib> ]		; 
=> ;
		_GraphPrint(<"window">,		;
		<nT>,				;
		<nL>,				;
		<nB>,				;
		<nR>,				;
		<nH>,				;
		<nW>,				;
		<aSer>,				;
		<cTitle>,			;
		<aYVal>,			;
		<nD>,				;
		<nW>,				;
		<nSep>,				;
		<nRange>,			;
		<.l3D.>,			;
		<.lGrid.>,			;
		<.lxGrid.>,			;
		<.lyGrid.>,			;
		<.lxVal.>,			;
		<.lyVal.>,			;
		<.lSLeg.>,			;
		<aName>,			;
		<aColor>,			;
		<nType>,			;
		<.lViewVal.>,			;
		<mask>, <nLegendsWidth>, 0, 0, <"clib">)
Y puede imprimir de forma distinta (en este caso menor el gráfico), pero en HMG, no existen estos parametros :(