Gráficos no Protheus


Gráficos no Protheus Usando a função MATGRAPH pode-se criar gráficos que serão montados a partir dos dados de um array ou de um arquivo de trabalho passado como parâmetro. Pode-se também escolher o tipo de gráfico com 2 ou 3 dimensões e visualizar em formato de linha, barra ou área. Grafico1 - MatGraph Para usar, use o include PROTHEUS.CH ou TOTVS.CH e inclua a função abaixo em seu programa, modificando-a da maneira que achar

#include "Totvs.ch"

User Function fGrafico()
    local lGraph3D := .t. // .F. Grafico 2 dimensoes - .T. Grafico 3 dimensoes
    local lMenuGraph := .t. // .F. Nao exibe menu - .T. Exibe menu para mudar o tipo de grafico
    local lMudaCor := .t.
    local nTipoGraph := 2
    local nCorDefault := 1
    local aDados := {}
    local aStru := {}
    local cArquivo := CriaTrab(,.f.)
    local i

    If MsgYesNo("Deseja exibir o grafico com os dados do array?")
        // O grafico sera montado a partir dos dados do array aDados
	    aDados := {{"Valor 1", 400}, {"Valor 2", 500},{"Valor 3", 800}}
        MatGraph("Graficos",lGraph3D,lMenuGraph,lMudaCor,nTipoGraph,nCorDefault,aDados)
    Else           
    	lGraph3D := .F.   
    	nTipoGraph := 5    
    	nCorDefault := 12                                             
    	aDados := {{"Janeiro", 400}, {"Fevereiro", 500},{"Março", 800}, {"Abril", 500},;
    			   {"Maio", 800},{"Junho", 440},{"Julho", 330}, {"Agosto", 100},;
    			   {"Setembro", 0},{"Outubro", 800},{"Novembro", 800},{"Dezembro", 1800}}
    			   
        aStru := { {"EixoX", "C", 20, 0}, {"EixoY", "N", 8, 2} }
        dbCreate(cArquivo,aStru)
        dbUseArea(.T.,,cArquivo,"GRAFICO",.F.,.F.)
        For i:=1 to Len(aDados)
           ("GRAFICO")->( dbAppend() )
           ("GRAFICO")->(EixoX) := aDados[i][1]
           ("GRAFICO")->(EixoY) := aDados[i][2]
        Next i
         // O grafico sera montado a partir dos dados da area de trabalho "GRAFICO"
         MatGraph("Graficos", lGraph3D, lMenuGraph, lMudaCor, nTipoGraph, nCorDefault,,"GRAFICO",       {"EixoX","EixoY"})
         ("GRAFICO")->( dbCloseArea() )
     EndIf
Return
Grafico 2 - MatGraph