Criando gráficos através da FWChartFactory – Maratona AdvPL e TL++ 210

Nesse vídeo demonstraremos a utilização da classe FWChartFactory, que serve para criar gráficos em uma dialog.

Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zExe210
Cria gráficos em Dialogs do Protheus
@type  Function
@author Atilio
@since 20/02/2023
@see https://tdn.totvs.com/display/public/framework/FwChartFactory
@obs 
    
    **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/
 
User Function zExe210()
    Local aArea := FWGetArea()
    Local oFWChart
    Local oDlg
    Local aRand := {}
     
    //Cria a Janela
    DEFINE MSDIALOG oDlg PIXEL FROM 0,0 TO 400,600
        //Instância a classe
        oFWChart := FWChartFactory():New()
        oFWChart := oFWChart:getInstance(BARCHART) //BARCOMPCHART ; LINECHART ; PIECHART
         
        //Inicializa pertencendo a janela
        oFWChart:Init(oDlg, .T., .T. )
         
        //Seta o título do gráfico
        oFWChart:SetTitle("Título", CONTROL_ALIGN_CENTER)
         
        //Adiciona as séries, com as descrições e valores
        oFWChart:addSerie("Ano 2011", 20044453.50)
        oFWChart:addSerie("Ano 2012", 21044453.35)
        oFWChart:addSerie("Ano 2013", 22044453.15)
        oFWChart:addSerie("Ano 2014", 23044453.10)
        oFWChart:addSerie("Ano 2015", 25544453.01)
         
        //Define que a legenda será mostrada na esquerda
        oFWChart:setLegend( CONTROL_ALIGN_LEFT )
         
        //Seta a máscara mostrada na régua
        oFWChart:cPicture := "@E 999,999,999,999,999.99"
         
        //Define as cores que serão utilizadas no gráfico
        aAdd(aRand, {"084,120,164", "007,013,017"})
        aAdd(aRand, {"171,225,108", "017,019,010"})
        aAdd(aRand, {"207,136,077", "020,020,006"})
        aAdd(aRand, {"166,085,082", "017,007,007"})
        aAdd(aRand, {"130,130,130", "008,008,008"})
         
        //Seta as cores utilizadas
        oFWChart:oFWChartColor:aRandom := aRand
        oFWChart:oFWChartColor:SetColor("Random")
         
        //Constrói o gráfico
        oFWChart:Build()
    ACTIVATE MSDIALOG oDlg CENTERED

    FWRestArea(aArea)
Return

Bom pessoal, por hoje é só.

Abraços e até a próxima

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

2 Responses

  1. Juarez disse:

    Show Daniel
    é possivel usar um TTimer() e Refresh() no objeto do grafico para atualiza-lo a cada XX segundos?
    Para criar painéis on-line …

    • Bom dia Juarez, tudo joia?

      Eu nunca precisei fazer, mas acredito que, se a classe permitir zerar as séries para readicionar ou atualizar o valor delas, ai daria pra tentar acionar algum refresh.

      Caso não seja possível, ai você poderia simplesmente matar o objeto e recriar ele nas mesmas coordenadas.

      Um grande abraço.

Deixe uma resposta

Terminal de Informação