quarta-feira, 3 de fevereiro de 2010

Delphi Live Templates

Salve, salve




Entre os inúmeros recursos adicionados ao Delphi nos últimos anos para aumentar produtividade o Live Templates é um dos mais interessantes. Live Templates foi adicionado a partir do Delphi 2005 e permite você escrever mais código sem muita digitação, pois está baseado em Templates. Este templates são arquivos XML o que lhe permite alterar os templates já existentes e também criar novo.

Até o Delphi 2009 os arquivos templates podem ser localizados no diretório: C:\Program Files\Embarcadero\RAD Studio\6.0\ObjRepos\Code_Templates

A partir do Delphi 2010 os arquivos estão no diretório C:\Program Files\Embarcadero\RAD Studio\7.0\ObjRepos\en\Code_Templates, basicamente foi adicionado o diretório en, referente ao idioma inglês, se você utiliza o Delphi em outro idioma deverá considerá-lo.

Ao pressionar CTRL+J você tem uma lista de templates pré-definidos:

* Declaração de variáveis
* For
* While
* Criação de classes em diferentes formatos
* E muito mais

Vários outros templates podem ser criados, por exemplo um laço (while) em um DataSet, adicionar um lembrete (TO-DO) que algo tem que ser feito, um código específico referenciado um framework próprio, etc. Abaixo dois exemplos:

Ao digitar noteof e pressionar TAB, será executado o Live Template noteof, que adiciona o código abaixo:

1 while not dataset.eof do
2 begin
3
4 dataset.Next;
5 end;
6
7 ;


Abaixo o template responsável pela mágica, para utilizar este template basta gravar o código abaixo em um arquivo XML e na respectiva pasta mencionada anteriormente.



05
30

31
32 ;

Por Andreano Lanusse

Take care

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