Pular para o conteúdo principal

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.

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 melhor:

user function fRBSFgraf()
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 := {{"Valor 1", 100}, {"Valor 2", 500},{"Valor 3", 1000}}
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
   MatGraph("Graficos",lGraph3D,lMenuGraph,lMudaCor,nTipoGraph,nCorDefault,aDados)
Else
 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


Veja também: Listbox no Protheus

Comentários

  1. Como faço para imprimir esse grafico?
    Heitor
    hrwsheitor@hotmail.com

    ResponderExcluir
  2. Prezado Heitor,
    Vamos verificar e daremos retorno.

    ResponderExcluir
  3. Pessoal,
    Utilizem a MSGRAPH.
    É muito mais completa, com diversos recursos de edição e suporte a impressão.
    Abraços,
    Cristiano Oliveira.

    ResponderExcluir
    Respostas
    1. Obrigado pela participação, Cristiano! Se possível, posta um pequeno exemplo.

      Excluir

Postar um comentário

Postagens mais visitadas deste blog

Teclas de Atalhos TOTVS Developer Studio (Eclipse)

Seguem os atalhos para o TOTVS Developer Studio  (Eclipse)  : CTRL+H Localizar vários locais CTRL+F Localizar / substituir CTRL+K Localizar proximo resultado abaixo CTRL+SHIFT+K Localizar proximo resultado acima F11 Depurar F5 Percorre linha F6 Pula linha CTRL+F8 Trocar perspectiva CTRL+F7 Mudar visualização CTRL+F6 Navegar entre os fontes abertos CTRL+M Maximiza / miniminiza fonte CTRL+N Novo (wizard) CTRL+L Ir para linha CTRL+D Deleta toda linha CTRL+ALT+DOWN Duplica linha para baixo CTRL+ALT+UP Duplica linha para cima CTRL+SHIFT+L Apresenta lista de atalhos ALT+UP Move linha para cima ALT+DOWN Move linha para baixo CTRL+SHIFT+I Indenta o fonte CTRL+F9 Compilar CTRL+ESPAÇO A

Impressão com imagens no Protheus

Muitas vezes é necessário incluir uma imagem num relatório (uma logomarca por exemplo). Uma das maneiras de se fazer isto, é usar a classe TMSPRINTER() . O programa exemplo abaixo, ilustra bem como fazer. Este usa também a classe TFONT() (o tamanho do fonte leva o sinal de menos) : # include "PROTHEUS.CH" # include "RWMAKE.CH" user function fImprimeG() local oFont08 := tfont():New( 'Courier new' ,, -8, .t.),,; oFont09 := tfont():New( 'Courier new' ,, -9, .t.),,; oFont10 := tfont():New( 'Courier new' ,,-10, .t.) oPrint:=tmsprinter():new( "Impressao Grafica" ) oPrint:setportrait() oPrint:SetpaperSize(9) // PAPEL A4 if .not. oPrint:Setup() // MOSTRA JANELA DE CONFIGURAÇÃO DE IMPRESSAO msgalert( "IMPRESSAO CANCELADA." ) return nil endif // ESTE BLOCO PODE FICAR EM LOOP (DO WHILE, FOR..., ETC.) oPrint:StartPage() // oPrint:sayBitmap(linha, coluna, "C:\SUAPASTA\SUAIMAGEM.BMP", largura, al

Variáveis públicas do Protheus

Variáveis Públicas Disponíveis no Protheus: Nome Tipo Tamanho Descrição aEmpresas (A) Array contendo tantos elementos quanto forem as empresas e filiais cadastradas no sistema sendo que cada elemento se encontra no formato “EEFF” (Empresa + Filial) Ex.: “5501”. cAcesso (C, 128) Permissões de Acesso do Usuário. cEmpAnt (C, 2) Número da Empresa que está em uso no momento. Ex.: "55". cModulo (C, 3) Sigla do Módulo que está em uso no momento. Ex.: "EST" para o Módulo de Estoque. cNivel (N, 1) Nível de Acesso do Usuário podendo variar de 0 a 9 sendo que 9 indica um Administrador. cNumEmp (C, 4) Número da Empresa + Filial que está em uso no momento. Ex.: "9901". cSenha (C, 6) Senha do Usuário. cUserName (C, 15) Nome do Usuário sem brancos a direita. cUsuario (C, 533) Informações do usuário:de 001 a 006 – Senha do Usuário (6 dígitos)de 007 a 021 – Nome do Usuário (15 dígitos)de 022 a 533 – Permissões de Acesso (512 dígitos) dDataBa