São Paulo, 23 de Fevereiro de 2012
VB.NET – Criando um ImageButtonColumn (Coluna de botão de imagem ) em um DataGridView.
Por DANIEL MONTEIRO VAZ (DANIEL_M_VAZ@YAHOO.COM.BR)

É impressionante o quanto que a plataforma de desenvolvimento  .NET permite que até pessoas com pouca ou quase nenhuma experiência em programação possam desenvolver seus aplicativos.  Isso é possível porque a Microsoft disponibiliza junto com o Framework uma série de componentes pré-montados, bastando apenas ao programador “arrastar” o objeto desejado para dentro de um formulário, e configurar suas propriedades de acordo com as suas necessidades. Comparando-se com o VB6 e versões anteriores, a plataforma .NET simboliza um avanço na maneira de se programar, principalmente quando nos referimos às práticas de programação segundo os conceitos da OOP. Esta nova metodologia de desenvolvimento de softwares permitiu uma mudança radical nos conceitos de se programar, e os programadores habituados com as versões anteriores do VB6  tiveram que se adaptar repetinamente a estes novos conceitos.

No meu caso, por exemplo, era extremamente fácil trabalhar com formulários no VB6, e não me era muito custoso desenvolver um formulário DataFlex onde pudesse trabalhar com colunas contendo botões com imagem. Habituado a desenvolver desta forma, imaginei que tal componente já estaria disponível  no DataGridView, bastando apenas que eu configurasse uma coluna do mesmo, selecionasse uma imagem e pronto, o botão estaria criado. Quando pensei em desenvolver algo parecido para meu cliente, imaginei que pudesse criar um formulário mais ou menos assim:

Ou seja, um botão com uma imagem do tipo Exclusão, cuja ação seria excluir o registro do datagridview.

Porém, constatei que esta funcionalidade não estava disponível no controle DataGridView do .NET 3.5, restando-me apenas as seguintes opções:

O DataGridView tem uma coluna de botão onde posso indicar um texto, e igualmente uma coluna onde posso configurar uma imagem.Mas não possui uma coluna específica onde posso utilizar um botão com uma imagem sobre ele.

Pensei em vários métodos para criação de uma coluna que me exibisse um botão de imagem, utilizando sempre as classes System.Drawing, porém em todos os casos o meu código se tornava excessivamente grande.

Após muita pesquisa na Web, a solução mais conveniente seria utilizar uma coluna de imagem do DataGridView e sobre ela criar uma classe abstrata que executasse a funcionalidade de um botão, valendo-se dos métodos de teclas (Normal, Desativado e Pressionado). A solução consistia em escrever uma classe abstrata do DataGridViewImageButtonCell que se derivasse da classe DataGridViewButtonCell. Esta classe tem diversos métodos concretos e um único método abstrato denominado LoadImages (). Quando você deriva uma pilha nova desta classe, você estará forçado pelo compilador a escrever uma rotina nova de LoadImages ().

 



>>Comente Este Artigo!

Enviado por ZÉ (Ze@zezzao.com) em 6/4/2011 (00:00)

Cadê a classe?

Enviado por JONATHAN STECKER (jonathan.stecker@gmail.com) em 12/9/2011 (00:00)

Excelente! Bem detalhado e funcional. Parabéns pelo artigo.