Quick Tips : Imagem no DBGrid

Veja nesta Quick como adicionar imagens no DBGrid.

Olá galera, nesta Quick Tips, irei mostrar como adicionar uma imagem em um DBGrid. Imagine um Field no seu ClientDataSet Ativo, como se fosse Cliente ativo ou não, para não ficar informando S ou N, colocamos uma imagem para ilustrar.

Adicione os seguintes itens para que o form fique como o apresentado na Figura 1:

Figura 1. Form

Sejamos práticos e objetivos com um ClientDataSet (e um campo Ativo por exemplo) e um DBGrid. Vamos ao evento DrawColumnCell, do DBGrid, como mostra a Listagem 1.

Listagem 1. DBGrid

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if Column.Field = CDSPadraoAtivo then begin TDBGrid(Sender).Canvas.FillRect(Rect); ImageList1.Draw(TDBGrid(Sender).Canvas, Rect.Left +1,Rect.Top + 1, 0); if CDSPadraoAtivo.Text = 'S' then // Cadastro está ativo ImageList1.Draw(TDBGrid(Sender).Canvas, Rect.Left +1,Rect.Top + 1, 1) end; end;

Agora vamos implementar a alteração das imagens apenas clicando sobre a coluna do DBgrid. No evento CellClick, suponha que sua coluna Ativo seja a terceira coluna, lembrando que a primeira coluna é sempre 0 (Zero). Observe a Listagem 2.

Listagem 2. Alteração das imagens

procedure TForm1.DBGrid1CellClick(Column: TColumn); begin {Validamos se estamos na Coluna 3 e se o valor do campo Ativo é N , se for mudamos para S} if Column.Index = 2 Then if Column.Grid.DataSource.DataSet.Fields[Column.Index].AsString = 'N' Then begin Column.Grid.DataSource.DataSet.Edit; Column.Grid.DataSource.DataSet.Fields[Column.Index].Value := 'S' end else begin Column.Grid.DataSource.DataSet.Edit; Column.Grid.DataSource.DataSet.Fields[Column.Index].Value := 'N' end; end;

Veja o exemplo funcionando na Figura 2.

Figura 2. Exemplo funcionando

Fico por aqui ate à próxima Quick Tips.

Um abraço

Wesley Y

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados