Coincido con el amigo Garada.
Te propongo lo siguiente:
Código Delphi
[-]
Procedure TDatos.Query1AfterOpen(DataSet: TDataSet);
var
i:Integer;
Sufix:String;
begin
For i:=0 to Query1.FieldCount-1 Do
Begin
Sufix:='€';
if (Query1.Fields[i].Fieldname='GRAVAME' or Query1.Fields[i].Fieldname='BONIFICACION') then
Sufix:='%'
endif
Case (Query1.Fields[i].DataType) Of
ftSmallint:TSmallIntField(Query1.Fields[i]).DisplayFormat :='##,##0 '+Sufix;
ftInteger :TIntegerField(Query1.Fields[i]).DisplayFormat :='##,##0 '+Sufix;
ftFloat :TFloatField(Query1.Fields[i]).DisplayFormat :='##,##0.00 '+Sufix;
End;
End;
end;
Saludos cordiales