> ## Criando Gráficos no VB 5.0 com o MSChart.

##### Conteúdo

- Introdução.
- Utilização e Configuração.
- Exemplos de Utilização
- Projeto - Alunos.

> ### Introdução.

>     Para construir gráficos em sua aplicação você pode usar o Crystal Reports, o Excel
>     via automação OLE ou o controle gráfico do VB , o MSChart.

>     O MSChart permite apresentar seus dados em forma de gráfico como uma planilha do
>     Excel(linhas e colunas); gráficos tridimensionais, gráficos de torta, barra, pizza, etc.

>     Antes de iniciar você deve adicionar o controle Microsoft Chart Control ao seu
>     projeto da seguinte maneira:

> - Selecione a opção Components do menu Project, selecione o controle Microsoft Chart Control e clique em OK e adicione o controle ao seu formulário.

>     A figura 1.0 abaixo mostra a barra de ferramentas e a configuração inicial
>     do MSChart:

> fig 1.0 - Barra de Ferramentas | fig 2.0 - MSChart no Formulário - Configuração Inicial

>     Agora basta definir a fonte de dados que alimentará o gráfico , geralmente uma
>     tabela , e fazer a configuração do Controle MSChart.

>     Para abrir um diálogo de propriedades do controle, clique com o botão direito
>     do mouse sobre o mesmo, selecione a opção Properties e a janela para configuração
>     surge como mostrada na figura 2.0 abaixo:

> fig.3.0 - Pág. de Propriedades do MSChart | Cada aba permite configurar diversas propriedades utilizadas na confecção de um gráfico.

>     O MSChart não é lá aquela maravilha , mas consegue resolver , eu diria uns 70% dos
>     problemas relacionados a confecção de gráficos no Visual Basic.

>     Conteúdo

> ### Utilização e configuração.

>     Vejamos agora as propriedades do MSChart e de como configurá-lo.

> Fig 4.0

> A configuração inicial do controle gráfico apresenta uma série de quatro barras em cinco colunas com legendas R1 a R5. Esta sequência de dados é definida pela propriedade RowCount. A quantidade de colunas é definida pela propriedade ColumnCount. Na figura acima alteramos RowCount para 2 e ColumnCount também para 2 e ainda definimos a propriedade RowLabel para cada coluna e a propriedade ShowLegend para True.

> A propriedade ChartType permite obter os seguintes tipos de gráficos :

> - Barra - Valores de 0 e 1
> - Linha - Valores de 2 e 3
> - Áreas - Valores 4, 5 , 6 e 7
> - Combinação - Valores 8 e 9
> - Torta - Valor 14
> - XY - Valor 16
> Aba Chart
> - Chart Type - Permite escolhar o tipo de gráfico usado
> - Chart Options
> - Show Legend - Mostra a legenda no gráfico
> - Show Markers - Marcas sobre cada coluna do gráfico
> - Stack Series - Empilhar as colunas
> - Series em rows - Inverte apresentação , colunas em linhas
> Aba Axis e Axis Grid
> - Existem diversas propriedades que permitem configurar os eixos de um gráfico como:
> 1. Espessura e cor de linhas
> 2. Definição da escala - Valor Máximo e Mínimo
> 3. Divisão da Escala - Valor Maior e Menor

> Aba Series e Series Color
> - Permitem configurar diversas propriedades relacionadas ás séries do gráfico e a cor interior e da borda de cada série
> Aba BackDrop
> - Configura os elementos de fundo e da borda do gráfico. O elemento a ser configurado é selecionado na lista Property Name
> Aba Text
> - Através da lista Property Name podemos selecionar o título, o rodapé, títulos dos eixos X, Y ou de um segmento eixo Y e definir um nome para cada item , inclusive definindo o alinhamento e a orientação do texto através do grupo Alignment e Orientation.
> Aba Fonts
> - Permite definir a fonte, estilo, tamanho e efeitos de cor.
> Além destas propriedades temos as seguintes:
> - Row - especifica a linha corrente
> - RowCount - Determina o número de sequência de dados
> - RowLabel - define o rótulo de dados da linha corrente
> - Data - Permite a leitura e a atribuição dos valores de dados ao gráfico
> - Column - Define a coluna ativa.
> - ColumnCount - Define o número de colunas ativas
> - ColumnLabel - Define a legenda para a coluna ativa
> - BorderStyle - Define a borda do gráfico
> - ChartData - Permite atribuir valores ás sequências de dados a partir de uma matriz (array) de duas dimensões.

> ### Exemplos de Utilização do MsChart

> Vejamos dois exemplos de utilizando o MSChart:
> 1. Vamos construir um gráfico cujo objetivo é mostrar a evolução das receitas e despesas mensais. Nosso gráfico deverá ter as seguinte configuração:
> 1. Título do Gráfico - Receitas e Despesas - Ano 1998
> 2. Titulo do Eixo X - Meses
> 3. Título do Eixo Y - Reais - R$
> 4. Sequências de Dados - Duas sequências : Receitas e Despesas
> 5. Mostrar Legendas - Azul para Receitas e Vermelha para despesas
> 6. O gráfico deverá ter borda com sombra.
> 7. Número de linhas de sequências de dados - Três , representando os meses : Agosto, Setembro e Outubro.

> O jeitão do gráfico depois de pronto deverá ser o da figura 5.0 figura 5.0 |

> Agora vamos por a mão na massa e montar o gráfico . Iremos fazer isto em tempo de projeto.
> - Inicie um novo projeto no Visual Basic.Grave o formulário Form1 como Grafico
> - Selecione no Menu Project a opção Components e marque Microsoft Chart Control
> - No menu View opção ToolBox insira o controle OCX ( ver fig 1.0) no seu formulário.
> - Ative a janela de configuração de propriedades ( ver figura 2.0), na aba Text , Property Name Title em Text digite o título do gráfico - Receitas e Despesas - Ano 1998, selecione alinhamento centralizado e orientação de texto na vertical
> - Como no passo anterior selecione na Aba Text em Property Name selecione X axis Title e em Text informe - Meses com alinhamento centralizado e orientação vertical
> - Ainda como no passo anterior selecione a aba Text em Property Name selecione Y axis Ttile e em Text informe - Reais - R$ , com alinhamento centalizado e orientação na horizontal
> - Define a propriedade ShowLegend para True
> - Defina Colcount igual a 2 , pois teremos duas séries , Receitas e Despesas
> - Defina RowCount igual a 3 , pois teremos 3 sequências de dados - Agosto, Setembro e Outubro
> - Agora faça Column igual a 1 e Row igual a 1 . Isto define que iremos tratar a primeira sequência de dados e a primeira série que será a receita:
> - Defina RowLabel como Agosto
> - Informe na propriedade ColumnLabel - Receita
> - Informe na propriedade Data o valor de 40
> - Mantendo Row igual a 1 faça Column igual a 2 . Pois iremos tratar a série Despesa
> - Informe na propriedade ColumnLabel - Despesa
> - Informe na propriedade Data o valor de 50
> - Agora faça Column igual a 1 e Row igual a 2
> - Defina RowLabel como Setembro
> - Informe na propriedade Data o valor de 50
> - Mantendo Row igual a 2 faça Column igual a 2 .
> - Informe na propriedade Data o valor de 26
> - Agora faça Column igual a 1 e Row igual a 3.
> - Defina RowLabel como Outubro
> - Informe na propriedade Data o valor de 95
> - Mantendo Row igual a 3 faça Column igual a 2 .
> - Informe na propriedade Data o valor de 26
> - Na aba Axis selecione Y Axis e em Axis Scale desative Automatic Scaling, definindo a seguir :
> - Minimum -> 0
> - Maximum -> 100
> - Major divisions -> 10
> - Minor divisions -> 1
> - Na aba Series Color defina a series Receita com a cor Azul e Despesa com a cor Vermelha
> - Na aba BackDrop , Property Name -> Title , define a cor do título e em Border-> Style defina como Single line , Width igual a 1 pt e color como verde
> Bem , acho que com isso terminamos o gráfico, agora basta executar o projeto.

> ### Projeto - Alunos

> A esta altura voce deve estar pensando - "... pô se toda vez que eu tiver que fazer um gráfico tiver que usar este processo trabalhoso eu desisto. ! ", e você esta certo não tem cabimento , mas existe uma maneira bem mais fácil de fazer isto. Que tal alimentar os dados do seu gráfico diretamente de seus arquivos de dados ?

> Vamos mostrar a seguir um projeto simples que indica como fazer isto. Iremos criar um gráfico com os dados existentes em nossa tabela tblalunos para obter um gráfico que indique o número de alunos matriculados por série.

> Para facilitar criamos uma consulta que calcula a quantidade de alunos por série e a armazenamos no banco de dados com o nome de SEL_ SERIE , a instrução SQL da consulta é a seguinte:

> SELECT DISTINCTROW TBLALUNOS.SERIE, Count(TBLALUNOS.CODALUNO) AS ALUNOS FROM TBLALUNOS GROUP BY TBLALUNOS.SERIE;

>     O código do projeto é dado abaixo:

> Private Sub Form_Load() Set db = DBEngine.Workspaces(0).OpenDatabase("d:\escola\escola.mdb") End Sub

> Option Explicit Dim db As Database Dim rs As Recordset Dim qry As QueryDef Dim reg As Integer Dim i As Integer

> Private Sub grafico_Click() 'O objeto Mschart foi chamado de graf1 Set qry = db.QueryDefs("sel_series") Set rs = qry.OpenRecordset rs.MoveLast rs.MoveFirst reg = rs.RecordCount graf1.chartType = 1 'barra em duas dimensões graf1.ShowLegend = False 'não mostra legenda graf1.Title = "Relação de Alunos por Turma" 'titulo do gráfico graf1.ColumnCount = 1 'uma série graf1.RowCount = reg 'número sequencia de dados graf1.Visible = True While Not rs.EOF() For i = 1 To reg graf1.Row = i graf1.RowLabel = rs("SERIE") & " Série " graf1.Data = rs("alunos") rs.MoveNext Next Wend End Sub

>     O gráfico obtido esta exposto abaixo:

> Bem , deu para perceber que se quisermos algo mais requintado teremos que usar produtos de terceiros pois o Mschart deixa a desejar mas eu diria que para coisas simples dá pra quebrar o galho.

> Ah! ia esquecendo , como imprimir o gráfico ??? Insira o controle Picture no seu formulário e deixa-o invisível, e seguir insira um botão de comando com o nome de imprimir e acrescente o seguinte código a ele:

> Private Sub Command2_Click() graf1.EditCopy Picture1.Picture = Clipboard.GetData() Printer.PaintPicture Picture1.Picture, 0, 0 Printer.EndDoc Picture1.Picture = LoadPicture() End Sub

> Arrivederci !!!

    Conteúdo

    Retorna