Mostrando e
imprimiendo graficos
Un muy buen valor agregadio que podemos darle a nuestras aplicaciones es que permitan mostrar geificos e imprimirlos.
Hay muchas formas de conseguir ese objetivo con Visual FoxPro, aqui se muestra una de esas ténicas. Para ello, haremos uso de las,
bibliotecas de clases visuales llamadas: FOXCHARTS.VCX y GDIPLUS.VCX y de los archivos de
aplicacién REPORTOUTPUT.APP y SYSTEM.APP,
Estas bibliotecas de clases visuales y los archivos de aplicacién debes copiarlos en la misma carpeta donde se encuentra tu archivo EXE.
‘en alguna de las carpetas del PATH de bisqueda
GDIPLUS.VCX es una biblioteca grifica y es ampliamente usada.
FOXCHARTS.VCX es la biblioteca que contiene las funcionalidades que ahora nos interesan, pero depende de GDIPLUS.VCX, por lo
cual ésta debe también ser accesible
REPORTOUTPUT.APP es requerido para tener las caracteristicas de objetos de informes,SYSTEM.APP es parte de GDIPLUS.VCX y es requerido para que los graficos funcionen.
Nuestro primer paso serd crear un formulario e insertar un control FoxCharts en ese formulario, tal y como podemos ver en la Captura
1
Fe Tere EEE Ee ee ee
fom fom ioe Popa Mw Hp
= fee Fame Fs o
(Oee@oiteeo- |! oom saoCaptura 1. El aspecto del formulario después de insertarle un control FoxChart
El segundo paso seri cambiarle el nombre al control FoxCharts insertado. Su nombre por defecto es FoxCharts1 pero para que sea mis
corto serd abreviado a FCI.
A continuacién agregaremos un control Combobox que mostraré todos los tipos de graficos disponibles, un botén «Grabar grifico» para
poder grabar el grafico que esté visible y un botén «imprimir grafico» para poder imprimir ese prio.
IMPORTANTE: A Ia propiedad Value del Combobox detes asignarle un valor entre 1 y 17. Si nolo haces, obtendrds un mensaje de error porque
por defecto la propiedad Value de un Combobox es de tipo cardcter.Captura 2. Después de insertarle un Combobox y dos botones al formulario
Listado 1, El método INIT del formularioDEFINE CLR1 Rgb(255, 255, 0)
DEFINE CLR2 Rgb(255, @, 255)
DEFINE CLRI3 Rgb(255, 255, 224)
DEFINE CLR RED(
DEFINE CLALS RED(
DEFINE CLAIG RED
CREATE CURSOR CURSOR_GRAY
@, 255, 255)
@, 0, 255)
@, 255, @)
1
(TEM_CFILL1 C(80), TEM_LFILLT L, TEMLFILL2 L, TEMNFILLI N(2€
INSERT INTO CURSOR_GRAFICOL ;
(TeM_cFILLA,
VALUES ("Ene” , .F.
TEM_LFILLA, TEM_LFILL2,
» 1280, CLR1)
INSERT INTO CURSOR_GRAFICOL ;
(TEM_CFILLA,
VALUES ("Feb” , -F.
TEM_LFILLL, TEM_LFILL2,
» 2150, CLR 2)
INSERT INTO CURSOR_GRAFICOL 5
(TEM_CFILLA,
VALUES ("Mar” , .F
TEM LFILLA, TEM LFILL2,
5 +P, 3020, CLR 3)
INSERT TNTO CURSOR_GRAFICOL ;
(Tem_crrtta,
VALUES ("Aabr” , oF
TeM_LFTLLA, TEM_LFTLL2,
» oF. , Iie, CR4)
INSERT INTO CURSOR_GRAFICOL ;
(TEM_CFILLA,
VALUES ("May” , =F.
TEM_LFILLA, TEM_LFILL2,
» 1948, CLRS )
INSERT INTO CURSOR_GRAFICOL 5
(TeEM_cFILLA,
VALUES ("3un” , Fe
WITH ThisFoom.Fc2
TEM_LFILLL, TEM _LFILL2,
» 2104, LRG )
TEM_NFILLA,
TEM_NFILLA,
TEM _NFILU,
TEM_NFILU,
TEM_NFILU,
TEM_NFILLA,
TEM_NFILU
TeM_NFLLL
TEM_NFILL
TEM_NFTLL
TEM_NFILL
TEM_NFLLL42 -ChartsCount 1 a8 Cantidad de colunn
43 ‘Fieleaxis2 TEMCFILLA" —&& Etiquetas que se x
44 iFlelecolor NFILL2" && Colores que tendré
43 ‘Flelebetachslice LFILLI" && Las porciones ser
46 FieleHideslice && Las porclones ser
a7 ‘Flelategend && Leyenda que se mos
43 ‘Fields(1).Fieldvalue 28 Valor nunérico de
49 Fielés(1) -Legend && Cuando hay mas de
50 Fields(1) -Color RGB(@, @, 128) 88 Azul oscuro
51 ‘Fielas(1)-shape = 1 88 Estrella
52 ‘Sourcealias ‘CURSOR_GRAFICO1
53 ‘SubTitle.caption ‘Conpras del primer senestre”
54 ‘Title.Caption Mi Gran Empresa S.A."
55 ‘visible 1.
56 Didvcis Caption Meses:
57 lyaxds {Caption ‘en délares”
58 ‘Drawchart()
59 | _ ENDWITH
60 | ThisForm.Conbo1.Value = 1
61 | -DODEFAULT()
62
63 | RETURN
ea) *
65 | *
LLos valores ingresados en CURSOR_GRAFICOI son un ejemplo, ti debes obtener y colocar los valores correctos en el campo
‘TEM_NFILLI. Similarmente, los colores puestos en la columna TEM_NFILL2 también son un ejemplo, tt puedes poner cualquier
color que te gust.Y desde luego no hace falta que tu cursor se lame CURSOR_GRAFICOI ni que los campos se llamen TEM_CFILL1, TEM_NFILLI,
‘TEM_NFILL2, etc
Listado 2, El métade LOADO del formulario
_REPORTOUTPUT = FULLPATH("REPORTOUTPUT.APP")
Do SYSTEM. APP
RETURN1| — this.adgProperty(*acharts(1]")
2
3 | DIMENSION This.acharts(17)
4
S| WITH this
6 -acharts( 1) = Torta "
7 ‘acharts( 2) = rosea"
a ‘acharts( 3) = Bareas apiladas-conpletas
9 ‘acharts( 4) = Puntos
10 ‘acharts( 5) = Lineas *
n ‘acharts( 6) = Area *
2 “acharts( 7) > Barras simples *
B ‘acharts( 8) > Barras miltiples *
4 ‘acharts( 9) = Barras apiladas ”
15 ‘acharts(10) = Area apilads *
16 ‘acharts(11) = Barras en 30 "
v ‘acharts (12) = Barras simples horizontales *
18 ‘acnarts(13) = Barras Ultiples horizontales *
19 acharts(i4) = "14 - Barras apiladas horizontales
20 ‘acharts(15) = "15 - Barras apiladas horizontales completas"
2 ‘acharts(16) = "16 - Area apiiada completa
22 acharts(17) = "17 = Barras horizontales enparejadas *
23 RowSourceType = 5 && Array
2a ‘Rowsource = “Tais.acharts"
25) ENO!TTH
26
27 | RETURN
23) +
23 | +2] LOCAL Inchart
2
3) Inchart = This.Value
4
S| IF Inchart == 2 THEN && Rosca
6 ThisForm.FC1.Shadow = .F.
7| ENDIF
a
9| IF Inchart == 16 THEN && No funciona, siempre muestra un mens
10 RETURN
a | eNoIF
2
33 | RETURN
ule
as | *
—_—_=____ »
Listado 5. El método VALIDO del Combat
2] LOCAL Inchart
2
3) Inchart = This.ListIndex
4
5| IF Anchart = 16 THEN 8% No funciona, siempre muestra un mens
6 RETURN
7 | ENDIF
8
9| WITH ThisForm.Fe1
10 sChartType = Inchart
ua ‘orawchart()
| enowrt
a
aa | RETURN
as) *
ae | *
6 >1] LOCAL LeIngFormatTypes, 1cFile
2
3 | — etngFormatTypes = “BNP52G;GIFSPNGSTZE; EME"
4
5 | 1cFile = PutFile("Grabar imagen como...", "", IcIngFormatTypes)
6
7 | IF Empty(1cFile) THEN 88 Nonbre de archivo invalido
a RETURN (.F.)
9| ENDIF
10
11 | ThisForm.Fc1.SaveToFile(IcFile)
2
33 | RETURN
aa) *
as| *
Listado 7, El método CLICK() del botfin «Imprimir gréficon
PRIVATE oF oxChart
SET REPORTBEHAVIOR 90
oFoxchart = ThisForm.FC1.chartCanvas
REPORT FORM FoxchartsView PREVIEW NOWALT
RETURN
BB emvausunn
Algunos ejemplos:Mi Gran Empresa S.A.
Compras del vimer semestre
Captura 3, Un grifico de torta mostrado en el formularioves
Mi Gran Empresa S.A
Captura 4. Un grafico de rosea mostrado en el formulario‘Mi Gran Empresa S.A
Compras de primer semesteCaptura 5. Un grifico de lineas mostrado en el formulario,
Mi Gran Empresa S.A.
Compras del pmer samests
Captura 6, Un grafico de barras simples mostrado en el formularioMi Gran Empresa S.A.
Captura 7. Un grifico de barras simples pero mostradas horizontalmente
Conclusin:
Las aplicaciones que pueden mostrarles graficos a los usuarios tienen un plus, porque como sabemnos «un grifico vale més que mil
palabras», En este articulo hemos visto lo facil que resulta mostrar grificos de buena calidad.El control FOXCHART tiene muchisimas més opciones y ya queda a tu cargo investigarlas,incluir esas opciones en este articulo del
blog ya lo hubiera alargado demasiado, Pero con lo visto hasta aqui ya tienes para mostrar graficos vistosos a tus usuarios.
El indice del blog VEPavanzado
Descargas:
|htspulluvww mediafire com/file/35343hrepdSdm31/GR%C3%81FICOS ZIP