Gráficos no Protheus - parte 2


Outra função que permite criar gráficos no Protheus é a TMSGraphic. Grafico 1 - TMSGraphic

Exemplo 1
----------------------------------------------------------------------------------------------------------------
#include "Protheus.CH" 
#include "MSGRAPHI.CH"

User Function TMSGra01()
    Private nPt := 40
    Private nPmdb := 60
    
    DEFINE MSDIALOG oDlg TITLE "Exemplo TMSGraphic" FROM 180,180 TO 550,700 PIXEL
    
    oGraphic := TMSGraphic():New( 35,01,oDlg,,,RGB(239,239,239),230,150) 
    oGraphic:SetMargins(2,6,6,6)
    oGraphic:SetLegenProp(GRP_SCRRIGHT, CLR_LIGHTGRAY, GRP_AUTO,.T.)
    
    nSerie := oGraphic:CreateSerie( GRP_PIE ) // GRP_PIE=10
    oGraphic:Add(nSerie, nPt , 'Votos PT' , CLR_HGREEN )
    oGraphic:Add(nSerie, nPmdb, 'Votos PMDB', CLR_HRED )
    
    @ 5, 01 SAY "Digite os votos do PT " OF oDlg PIXEL
    @ 20, 01 SAY "Digite os votos do PMDB" OF oDlg PIXEL
    @ 5, 100 MSGET nPt OF oDlg PIXEL PICTURE "@E 9999,999"
    @ 20, 100 MSGET nPMDB OF oDlg PIXEL PICTURE "@E 9999,999"
    @ 5, 150 BUTTON "Atualiza" SIZE 40,14 OF oDlg PIXEL ACTION xAtualiza(@oGraphic, nPt, nPMDB)
    
    ACTIVATE MSDIALOG oDlg CENTERED
    
    Return
    
    Static Function xAtualiza(oGraphic, nPt, nPMDB)
    
    // Destroi e recria o objeto de grafico
    // OBS: Necessário para manutenção de recursos do sistema
    FreeObj(oGraphic)
    oGraphic := TMSGraphic():New( 35,01,oDlg,,,RGB(239,239,239),230,150)
    
    // Nao necessário pois o objeto foi recriado
    //oGraphic:DelSerie(nSerie)
    
    nSerie := oGraphic:CreateSerie( GRP_PIE ) // GRP_PIE=10
    oGraphic:Add(nSerie, nPt , 'Votos PT', CLR_HGREEN )
    oGraphic:Add(nSerie, nPMDB, 'Votos PMDB', CLR_HRED )
    
Return

Exemplo 2
------------------------------------------------------------------------------------
#INCLUDE "TOTVS.CH"
#INCLUDE "MSGRAPHI.CH"
 
USER FUNCTION TMSGra01() 
    DEFINE DIALOG oDlg TITLE "Exemplo TMSGraphic" FROM 180,180 TO 550,700 PIXEL
 
    // Cria o gráfico
    oGraphic := TMSGraphic():New( 01,01,oDlg,,,RGB(239,239,239),260,184)    
    oGraphic:SetTitle('Titulo do Grafico', "Data:" + dtoc(Date()), CLR_HRED, A_LEFTJUST, GRP_TITLE )
    oGraphic:SetMargins(2,6,6,6)
    oGraphic:SetLegenProp(GRP_SCRRIGHT, CLR_LIGHTGRAY, GRP_AUTO, .T.)
     
    // Itens do Gráfico
    nSerie := oGraphic:CreateSerie( GRP_PIE ) 
 
    oGraphic:Add(nSerie, 200, 'Item 01', CLR_HGREEN )  
    oGraphic:Add(nSerie, 180, 'Item 02', CLR_HRED)
    oGraphic:Add(nSerie, 210, 'Item 03', CLR_YELLOW )
 
    ACTIVATE DIALOG oDlg CENTERED 
RETURN
Grafico 2 - TMSGraphic