Acabo de probar tu código practicamente sin modificaciones y me ha funcionado bien. La única diferencia sería en la comparación:
Código Delphi
[-]
if Field.Name = 'Icono' then
que yo pongo como
Código Delphi
[-]
if Field.FieldName = 'Icono' then
Name es el nombre de la componente TField y no el nombre del campo. Así que yo creo que el único problema es ése, la condición nunca se cumple de manera que todo se dibuja tal cual.
// Saludos