VCL Delphi

// in this sample;
// 1. drop two image component to main form
// 2. fill the images picture with specific country flag (Bitmap Picture)
// The code :
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
bmpImage: tBitmap;
intX, intY: Integer;
begin
if DataSource1.DataSet.RecNo > 0 then
begin
if column.FieldName = 'COUNTRY' then
with DBGrid1.Canvas do
begin
fillRect(rect);
bmpImage := tBitmap.Create;
try
if DBGrid1.DataSource.DataSet.FieldByName('COUNTRY').AsInteger = 0 then
bmpImage.Assign(image0.Picture.Bitmap);
if DBGrid1.DataSource.DataSet.FieldByName('COUNTRY').AsInteger = 1 then
bmpImage.Assign(image1.Picture.Bitmap);
intX := ((rect.Right - rect.Left) div 2) -
(bmpImage.Width div 2);
intY := ((rect.Bottom - rect.Top) div 2) -
(bmpImage.Height div 2);
draw(rect.Left + intX, rect.Top + intY, bmpImage);
finally
bmpimage.Free;
end;
end;
end;
end;