Esse artigo faz parte da revista Clube Delphi Edição 84. Clique aqui para ler todos os artigos desta edição

T-FAMILY: Verdana">Nota: O banco de dados que acompanha o Firebird (Employee) não possui essas tabelas, então foi disponibilizado para download um banco com as respectivas tabelas.

 

Deseja-se apresentar ao usuário todos os Produtos agrupados por Categorias, com subtotais. Para isso, é utilizado como DataSource um DataTable criado a partir do retorno da consulta. Talvez você esteja se perguntando: “Por que criar colunas dinamicamente, se é possível criá-las sem uma linha de código e de forma quase que instantânea?”. Certo?

A resposta para essa pergunta pode ser melhor analisada através do seguinte questionamento: “Como fazer para que um mesmo DataGrid seja parametrizado de forma que em certas situações apresente X colunas e em outras situações apresente Y colunas?”. Resposta: Criar as colunas dinamicamente, podendo também utilizar artifícios de Orientação a Objetos como Herança e Polimorfismo.

Para aumentar a compreensão da resposta apresentada, imagine que você queira centralizar seus relatórios em apenas uma página ASPX com apenas um DataGrid e que cada relatório tenha uma consulta SQL diferente. Uma forma viável, através de OO, é criar uma classe pai RelatorioPadrao com dois métodos: retornaColunas e retornaDados e para cada relatório a ser gerado, criar classes filhas (exemplo RelatorioProduto) que irão sobrescrever esses métodos.

 Dessa forma, na página ASPX será instanciada a classe desejada e invocados os métodos que retornam as colunas do DataGrid e seu DataSource. Neste artigo, para simplificar, não será modelado através de classes e subclasses.

A criação das colunas, formatação do DataGrid e agrupamento com subtotais serão feitos diretamente na classe da interface (ASPX).

 

Dica: Para uma introdução ao uso do DataGrid no Delphi, veja o artigo de Rodrigo Sendin na edição 73.

 

Projeto

No Delphi 8, 2005 ou 2006 crie um projeto ASP.NET chamado “DataGridAgrupadoColunas” contendo um formulário chamado “GridAgrupadoColunas.aspx”. Adicione um DataGrid (“gridProdutoCategorias”), um Button (“btnSelecionados”) e um ListBox (“lstSelecionados”).

Como sugestão de layout, veja a Figura 1. Apenas observe que são utilizadas tabelas HTML para possibilitar uma melhor organização visual.

 

Figura 1. Layout de interface sugerido

 

Para agilizar o tempo de desenvolvimento, selecione o DataGrid e formate a cor e fonte do cabeçalho. Em tempo de design não é necessário fazer mais nada. No projeto sugerido, é realizada uma consulta ao banco de dados Employee do Firebird, retornando a tabela Produtos com sua respectiva Categorias, como na Figura 2.

 

Figura 2. Consulta realizada nos Produtos e Categorias

 

Porém, o desejado é que os produtos sejam visualizados agrupados por categorias no DataGrid, incluindo subtotais e no final um Total Geral. Para isso, via programação, a partir da consulta original, é criado um novo DataTable no modelo final.

 

ClubeDelphi PLUS!

Acesse agora o mesmo o portal do assinante ClubeDelphi e assista a uma vídeo-aula de Luciano Pimenta que mostra como criar um master/detail utilizando o DataGrid.  www.devmedia.com.br/articles/viewcomp.asp?comp=2050

 

No DataGrid são criadas cinco colunas dinamicamente, como vemos na Tabela 1.

 

Nome

Tipo

Obs

Selecionar

TemplateColumn

CheckBox

Descrição

BoundColumn

 

Valor Unitário

...
Quer ler esse conteúdo completo? Tenha acesso completo