Cada vez que cambien las columnas:
DBGrid.columns.RebuildColumns
El único inconveniente, es que traerá el ancho de cada columna en base a lo establecido en el campo, si un campo es varchar(300), esa columna romperá el monitor por el lado derecho
. Bastará con asignar el DisplayWidth de ese campo.
saludos