El Código simplificado de Roman no lo pude probar, pero el código original el único error que le encontre fue que una vez utilizado el código, se desvincula el DBGrid y queda abierto el ClientDataSet, al volver a vincular el DBGrid me genera erro al querer encontrar las columnas con la cabezera modificada, despúes a mi me anduvo sin ningún problema.
Saludos