Outra função que permite criar gráficos no Protheus é a 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