A dica abaixo serve para desenhar um ícone(bitmap) em cada célula de um dbgrid de acordo com o valor de um determinado campo da tabela... Ex: temos uma tabela "sexo" com o campo "sexo" que guarda os valores "M" para masculino e "F" para feminino. Então podemos fazer o dbgrid mostrar uma ícone(bitmap) de um homem ou um de uma mulher ao invés dos valores "M" e "F"...
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
Icon: TBitmap;
begin
Icon := TBitmap.Create;
if (Column.FieldName = 'SHARES') then
begin
with DBGrid1.Canvas do
begin
Brush.Color := clWhite;
FillRect(Rect);
if (Table1.FieldByName('SHARES').Value > 4500) then
ImageList1.GetBitmap(1, Icon)
else
ImageList1.GetBitmap(0, Icon);
Draw(round((Rect.Left + Rect.Right - Icon.Width) / 2), Rect.Top, Icon);
end;
end;
end;
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
Icon: TBitmap;
begin
Icon := TBitmap.Create;
if (Column.FieldName = 'SHARES') then
begin
with DBGrid1.Canvas do
begin
Brush.Color := clWhite;
FillRect(Rect);
if (Table1.FieldByName('SHARES').Value > 4500) then
ImageList1.GetBitmap(1, Icon)
else
ImageList1.GetBitmap(0, Icon);
Draw(round((Rect.Left + Rect.Right - Icon.Width) / 2), Rect.Top, Icon);
end;
end;
end;