Gerando gráficos para programas Online/Batch Magic xpa

1) Pré-requisitos

  • Magic 9.4 ou Magic xpa (uniPaaS)
  • (OWC) Office Web Components (http://www.microsoft.com/downloads/details.aspx?FamilyId=7287252C-402E-4F72-97A5-E0FD290D4B76&displaylang=pt-br) ou caso já tenha instalado juntamente com o Office 2003.

2) Sobre o gráfico

A idéia é gerar um gráfico que mostre em linhas as Notas Bimestrais de cada Aluno.

Alunos (João, Pedro e Maria) / Bimestres (1º, 2º, 3º, e 4º)

Notas:

  • João: ( 10, 7, 8, 5 )
  • Pedro: ( 7, 5, 9, 8 )
  • Maria: ( 5, 8, 10, 10 )

3) Criando as Variaveis das Series e Valores

  • Crie uma variavel do tipo Vetor chamada bimestres, nesta variavel vai conter os textos “1º, 2º, 3º, 4º”. Não esqueça que para variaveis do tipo vetor deve-se associar na propriedade “Part Of DataView” um modelo, neste caso associe a um modelo de Alpha tamanho 30.
  • Crie mais três variáveis do tipo Vetor chamadas “João, Pedro e Maria”. Associe a um modelo do tipo Numerico de 2.
  • Crie uma variavel chamada oChart do tipo ActiveX e na propriedade “Object Name” tecle F5 e selecione a opção “Microsoft Office Chart 11.0”, caso não tenha esta opção necessita instalar conforme item 1.
  • Crie outra variável chamada oChartItem do mesmo modo do item c) e acrescentando a seleção da propredade “Sub-Object Name” teclando F5 e selecionado a opção Item dentro de Charts, com isso esta propriedade deve ficar assim “Charts.Item”
  • Crie outra variável chamada oChartSerie do mesmo modo do item d), mas selecionando Item dentro de SeriesCollection que fica dentro de Item de Charts, deve ficar assim “Charts.Item.SeriesCollection.Item”.

Descrição de cada variável:

  • Bimestres = Vai ficar com os textos “1º, 2º, 3º, 4º”
  • João / Pedro / Maria = Devem ficar as notas de cada aluno.
  • oChart = Objeto responsável por mostrar o gráfico
  • oChartItem = Objeto para manipular atributos do grafico, tal como inserir serie e tipo do gráfico.
  • oChartSerie = Objeto para manipular as series

4) Inicializando os vetores (Task Prefix)

Para setar vetor deve-se utilizar a função VecSet, nesta função deve-se passar a variavel como referencia, a posição do vetor e seu valor. Esta função retorna verdadeiro ou falso, então vamos usar a operação Evaluate
Na variavel Bimestre letra associada “A” deve conter:

  • VecSet(‘A’VAR,1,’1º’)
  • VecSet(‘A’VAR,2,’2º’)
  • VecSet(‘A’VAR,3,’3º’)
  • VecSet(‘A’VAR,4,’4º’)

Na variavel João letra associada “B” deve conter:

  • VecSet(‘B’VAR,1,10 )
  • VecSet(‘B’VAR,2,7)
  • VecSet(‘B’VAR,3,8)
  • VecSet(‘B’VAR,4,5)

Na variavel Pedro letra associada “C” deve conter:

  • VecSet(‘C’VAR,1,7)
  • VecSet(‘C’VAR,2,5)
  • VecSet(‘C’VAR,3,9)
  • VecSet(‘C’VAR,4,8)

Na variavel Maria letra associada “D” deve conter:

  • VecSet(‘D’VAR,1,5)
  • VecSet(‘D’VAR,2,8)
  • VecSet(‘D’VAR,3,10 )
  • VecSet(‘D’VAR,4,10 )

5) Incluindo um gráfico (Task Prefix)

  • Agora utilize o “Invoke COM” (Magic xpa) ou “Call COM” (Magic94)
  • No ZOOM do Invoke COM selecione a variavel oChart em Object, selecione a opção “Invoke Method”(Magic xpa) ou “Call Method”(Magic94), na opção method tecle F5 e selecione o Add que fica dentro de Charts.
  • No return selecione a variavel oChartItem.
  • Até aqui mandamos o objeto OWC incluir um gráfico

6) Definindo o tipo do gráfico (Task Prefix)

  • Acrescente outro Invoke COM selecionando a variavel a variavel oChartItem selecione a opção “Set Property”, na Property selecione Type. Na propriedade Value coloque o numero 6.
  • Até aqui falamos para o gráfico ser do tipo Line, na priedade Type ao teclar F1 aparece o help do objeto OWC. E lá contem o numero que representa o gráfico do tipo Line que é 6.

7) Incluindo série (Task Prefix)

  • Acrescente outro invoke COM selecionando a variavel oChartItem e a opção Invoke Method e selecione a opção Add dentro de SeriesCollection. Na propriedade return selecione a variavel oChartSerie.
  • Até acrescentamos a primeira serie do gráfico que vai ter as notas do aluno João

8) Colocando o Texto descritivo da serie

  • Acrescente outro invoke COM selecionando a variavel oChartSerie e a opção “Set Property”, na Property selecione Caption. Na propriedade Value coloque o texto ‘João’.

9) Associando os valores a série (Task Prefix)

  • Acrescente outro invoke COM selecionando a variável oChartSerie e a opção Invoke Method selecione o metodo SetData e nos arguments passe o valor 1 para Dimension, -1 para DataSourceIndex e a variavel bimestre para DataReference.
  • Até aqui adicionamos os textos das series que serão 1º, 2º, 3º e 4º bimestres.
  • Significados dos parametros informamos:
  • Dimension = 1, significa que é um texto de uma série do gráfico
  • DataSourceIndex = -1, significa que não tem origem de dados e será passado um vetor com os dados.
  • DataReference = Qual o vetor com textos.
  • Acrescente outro invoke COM selecionando a variável oChartSerie e a opção Invoke Method selecione o metodo SetData e nos arguments passe o valor 2 para Dimension, -1 para DataSourceIndex e a variavel João para DataReference.
  • Agora sim informamos os valores desta serie.
  • Significados dos parametros informamos:
  • Dimension = 2, significa que é um valor de uma série do gráfico
  • DataSourceIndex = -1, significa que não tem origem de dados e será passado um vetor com os dados.
  • DataReference = Qual o vetor com dados.
  • Repita este passo mudando a variavel João para Pedro e Maria.

10) Para programas Online

Acrescente a variavel oChart no form e pode rodar o programa.

11) Para programas Batch

  • Acrescente um invoke COM selecionando a variavel oChart selecione a opção invoke method.
  • No metodo escolha o que achar melhor:
  • ExportPicture = Gera uma imagem. Parametros a serem passados: Nome do arquivo, tipo da imagem pode ser “gif”, tamanho e altura
  • GetPicture = Retorna uma imagem para uma variavel Blob. Parâmetros a serem passados: Tipo da imagem pode ser “gif”, tamanho e altura. E no return utilize uma variavel blob que conterá a imagem.

Clique aqui para download de um programa exemplo

OBSERVAÇÃO:

  1. Como descrito logo no começo esta dica vale para programas Online ou Batch, até porque RichtClient não se utiliza objetos ActiveX. Uma saída seria chamar um batch que gera a imagem ou devolve em um blob, mas eu indicaria utilizar a API do google de geração de gráfico (http://code.google.com/intl/pt-BR/apis/chart/) utilizando a função HTTPGet ou melhor ainda vincular a URL a um subform.
  2. Programas desenvolvidos com o objeto OWC deve-se levar em conta que as maquinas que irão gerar ou ver gráficos devem ter o componente instalado.
  3. No Magic94 as opções do CALL COM (Arguments, Property, Return e Value) estão todas na tela quando tecla F5, enquanto que no uniPaaS as estão nas propriedades do Invoke COM.
Jeronimo Alberto da Costa - Consultor Técnico Magic
Jeronimo Alberto da Costa – Consultor Técnico Magic