quarta-feira, 3 de fevereiro de 2010

Criando gráficos em sua aplicação Delphi com TeeChart

TeeChart é um dos componentes de terceiros mais utilizados no Delphi e o que acompanha o Delphi por mais tempo, não me lembro agora, mas já fazem muitos anos que ele está presente. Desenvolvimento pela Steema Software que ano a ano implementa novas funcionalidades e extende toda os seus componentes para outras linguagens.

É muito fácil utilizar este componente, posso dizer que para muitos gráficos você não precisaria escrever código, através dos wizards disponíveis você pode criar gráficos, trazendo dados de um DataSet e pronto, mas claro que existiram situações onde você talvez necessita customizar algo e ai codificar será inevitável.

Assim sendo resolvi escrever este post e mostra um exemplo simples de como seria criar gráficos sem estar conectado a DataSet, ou seja, passar os dados a partir de um array ou algo parecido. O resultado final será o gráfico abaixo, onde se compara mês a mês o resultado das vendas de 2008 e 2009, além disso para cada mês temos o percentual que representou aquele mês no ano.




Vamos agora conhecer o código e saber como foi implementando este gráfico, ao final você poderá baixar os fontes.

Antes de mais nada, este é uma aplicação VCL, onde foi adicionado o componente TChart e com o botão direito selecione a opção Edit Chart, adicione duas séries através do botão Add, neste exemplo utilizei gráficos de barra.

A fonte de dados deste gráfico é um array que contém o total vendas para cada mês.

01 var
02 i: Integer;
03 val : Array[1..12] of Double;
04 begin
05
06 val[1] := 10.2;
07 val[2] := 12.2;
08 val[3] := 11.7;
09 val[4] := 6.3;
10 val[5] := 8.0;
11 val[6] := 2.9;
12 val[7] := 20.3;
13 val[8] := 1.4;
14 val[9] := 4.5;
15 val[10] := 6;
16 val[11] := 10;
17 val[12] := 15;


Após a definição da fonte de dados, remove os dados adicionados em tempo de runtime para as duas séries existentes, uma referente ao ano de 2008 e outra ao ano de 2009. Além disso defino que o estilo de apresentação dos valores para cada barra será percentual, isso quer dizer que será apresentado o quanto representa o total do mês no faturamento anual.

1 Series2008.Clear;
2 Series2008.Marks.Style := smsPercent;
3
4 Series2009.Clear;
5 Series2009.Marks.Style := smsPercent;


Depois disso vamos basta adicionar os valores de venda mensal para cada série (2008, 2009), repare que estou utilizando o array LongMonthNames para o obter o nome do mês, no meu caso os nomes aparecem em inglês, pois utilizo windows em inglês, ou seja, ele depende da versão do idioma do seu Windows, caso não queira depender do idioma do seu sistema operacional, basta sobrepor os valores para cada posição do Array.

Método Add foi utilizado para adicionar os valores, caso você queira customizar a cor de cada barra, basta adicionar uma cor como terceiro parâmetro ao método Add.


1 for i := 1 to 12 do
2 begin
3 Series2008.Add(val[i], LongMonthNames[i]);
4 end;
5
6 for I := 1 to 12 do
7 begin
8 Series2009.Add(val[i] / (1.45+(i/10)), LongMonthNames[i]);
9 end;


Take care