Fórum colocando imagem referente a linha de registro no dbgrid... #312044

07/02/2006

0

Gostaria de saber como exibir uma imagem no dbgrid a partir de um imagelist.

exemplo:

Table: Clientes
Campos: Codigo(integer), Nome(varchar), Status(char) *

* > opções 0, 1 ou 2 ( 0 = ativo, 1 = suspenso, 2 = bloqueado)

tenho um imagelist referentes a essas 3 posições.

Como referenciar na hora de exibição as linhas do dbgrid a essas imagens do imagelist ?


Thiagopedro

Thiagopedro

Responder

Posts

07/02/2006

Martins

Segue um exemplo feito com ClientDataSet, é só vc adaptar as suas necessidades.

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  Bmp   : TBitmap;
  RecF  : TRect;
  BmpX  : Integer;
  Indice: Integer;
begin
  RecF := Rect;
  If Column.Field = ClientDataSet1Status then
  begin
    If ClientDataSet1Status.Value = 0 then
       Indice := 0
    else If ClientDataSet1Status.Value = 1 then
       Indice := 1
    else
       Indice := 2;
    Bmp := TBitmap.Create;
    try
      ImageList1.GetBitmap(Indice, Bmp);
      BmpX := (Rect.Bottom - Rect.Top);
      RecF.Right := Rect.Left + BmpX;
      DbGrid1.Canvas.StretchDraw(RecF, Bmp);
    finally
      Bmp.Free;
    end;
    RecF := Rect;
    RecF.Left := RecF.Left + BmpX;
 end;
 DbGrid1.DefaultDrawColumnCell(RecF, DataCol, Column, State);
end;


Boa Sorte!!!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar