here you go, hope this helps. I have a calculated field in my dataset called ISSUES_TImageIcon.
I just set the text for that to a valid HTML tag and the browser knows how to render it in the grid.
procedure TDataModule1.ISSUES_TCalcFields(DataSet: TDataSet);
Var
aStatus : String;
begin
aStatus := Uppercase(ISSUES_TISSUE_STATUS.Value);
If aStatus = 'CLOSED' then
ISSUES_TImageIcon.Value := '<img width=16 height=16 src="images/tick.bmp"/>'
Else if aStatus = 'RESEARCHING' then
ISSUES_TImageIcon.Value := '<img width=16 height=16 src="images/research.bmp"/>'
Else if aStatus = 'REPORTED' then
ISSUES_TImageIcon.Value := '<img width=16 height=16 src="images/reported.bmp"/>'
Else if aStatus = 'CAN CLOSE' then
ISSUES_TImageIcon.Value := '<img width=16 height=16 src="images/flag_green.bmp"/>'
Else
ISSUES_TImageIcon.Value := '<img width=16 height=16 src="images/open.bmp"/>' ;
end;