FoxPress – Abril 2002

 

Gráficos

 

http://www.fpress.com/                                                                                           grafico.zip

 

 

          Por Luis Requesens

 

El hacer gráficos de barras, tarta, etc... en Fox nunca ha sido algo fácil. Con la pérdida del GENGRAPH los ejemplos que proponía MS siempre eran con el MS GRAPH cuya distribución no estaba permitida y que se instala con el Office. Los clientes deberían tener el Office para poder ver los gráficos deseados.

Un ejemplo de uso del MS GRAPH se publicó por esta revista hace ya algún tiempo mediante una carta al director en el que en un código claro, sencillo y simple se mostraba como usarlo. Por su interés y por si alguien usa este sistema lo trascribo:

public pantalla

pantalla = createobject("form")

 

pantalla.addobject("objeto", "olecontrol", "msgraph.chart.8")

pantalla.objeto.top = 0

pantalla.objeto.left = 0

pantalla.objeto.height = pantalla.height

pantalla.objeto.width = pantalla.width

pantalla.visible = .t.

pantalla.objeto.visible = .t.

 

pantalla.lockscreen = .t.

 

pantalla.objeto.object.application.chart.charttype = -4100

 

pantalla.objeto.object.application.datasheet.range("00").value = ""

pantalla.objeto.object.application.datasheet.range("01").value = "Pedro"

pantalla.objeto.object.application.datasheet.range("02").value = "Luis"

 

pantalla.objeto.object.application.datasheet.range("A0").value = "Enero"

pantalla.objeto.object.application.datasheet.range("A1").value = 25

pantalla.objeto.object.application.datasheet.range("A2").value = 40

 

pantalla.objeto.object.application.datasheet.range("B0").value = "Febrero"

pantalla.objeto.object.application.datasheet.range("B1").value = 35

pantalla.objeto.object.application.datasheet.range("B2").value = 55

 

pantalla.objeto.object.application.datasheet.rows("4").delete

pantalla.objeto.object.application.datasheet.rows("5").delete

pantalla.objeto.object.application.datasheet.columns("4").delete

pantalla.objeto.object.application.datasheet.columns("4").delete

 

pantalla.objeto.object.application.chart.hastitle = .t.

pantalla.objeto.object.application.chart.charttitle.text = "Mi gráfico"

 

pantalla.lockscreen = .f.

 

No obstante, la limitación que tienes, como se comentó antes es que el usuario tiene que tener instalado el Office para que funcione.

Pero Visual FoxPro 7.0 ha abierto una puerta al instalarse con el ActiveX llamado MS Chart Control.

Este control si lo quieres poner manualmente en un formulario debes hacer lo siguiente:

 

1.- Crea un formulario nuevo.

2.- En la barra de herramientas de controles del formulario selecciona Controles ActiveX (OleControl).

3.- En la pantalla de insertar objeto selecciona la opción tercera (inserta objeto)

4.- Localiza un control llamado Microsoft Chart Control. Seleccionalo y dale a Aceptar.

5.- Este es el control que vamos a usar:

 

        Si pulsas con el botón derecho del ratón sobre el objeto verás la opción de Propiedades de este control y podrás adaptarlo a tus necesidades. Este control muestra gráficos de diverso tipo en 2 y tres dimensiones.

 Pero como lo que seguramente quieres es ver un código de ejemplo te pongo el siguiente que no es muy largo:

public pantalla

pantalla = createobject("form")

 

pantalla.addobject("objeto", "olecontrol", "MSChart20Lib.MSChart.2")

pantalla.objeto.top = 0

pantalla.objeto.left = 0

pantalla.objeto.height = pantalla.height

pantalla.objeto.width = pantalla.width

pantalla.objeto.visible = .t.

pantalla.objeto.chartType = 1

pantalla.objeto.Title.Text = "Pedidos"

pantalla.objeto.ColumnCount = 1

 

pantalla.visible = .t.

pantalla.lockscreen = .t.

 

 

lnRow = 1

 

WITH pantalla.objeto.Object

      .RowCount = 0

      .RowLabelCount = 0

      .RowCount = 12

      .RowLabelCount = 1

      FOR x =1 to 12

       .Column = 1

       .Row = lnRow

       .RowLabel = 0 + x

       .Data = 10 + x

        lnRow = lnRow+1

     ENDFOR

ENDWITH

 

pantalla.lockscreen = .f.

 

Que nos da el siguiente gráfico:

 

En el código puedes ver que la instrucción

pantalla.addobject("objeto", "olecontrol", "MSChart20Lib.MSChart.2")

me añade el gráfico en tiempo de ejecución (lo que antes he hecho manualmente).

Por su parte la siguiente isntrucción es la que nos da la opción de escoger el tipo de gráfico:

pantalla.objeto.chartType = 1

Entretente un rato cambiando este parámetro para ver las diversas posibilidades que se tiene.

Entre otras cosas puedes poner gráficos en varias dimensiones como el siguiente:

Si quieres un ejemplo más elaborado tomando información de Bases de Datos y jugando con diversos tipos de gráficos mira este ejemplo de gráficos que lo tienes en los fuentes:

 

La parte principal del código de este ejemplo la tienes aquí:

Con un código relativamente parecido al anterior:

  IF !USED('order_history')

   RETURN .F.

  ENDIF

 

  SELECT order_history

  =REQUERY()

  LOCAL lnCount, lnRow

 

  lnCount = _TALLY

  lnRow = 1

  ThisForm.Text1.Value = 0

  WITH ThisForm.Olecontrol1.Object

      .RowCount = 0

      .RowLabelCount = 0

      .RowCount = lnCount

      .RowLabelCount = lnCount

      SCAN

       .Column = 1

          .Row = lnRow

          .RowLabel = ALLTRIM(order_id)

          .Data = ord_total

      lnRow = lnRow+1

    ThisForm.Text1.Value = ord_total+ThisForm.Text1.Value

     ENDSCAN

  ENDWITH

 

  WITH ThisForm.Olecontrol1

   IF !.Visible

    .Visible = .T.

   ENDIF

  ENDWITH

 

 

 

 

FoxPress – Abril de 2002

© 2002 FoxPress. All rights reserved