Hola Memo... Creo haber tenido el mismo problema.... Tu das DobleClick en la grilla pero el color no cambia inmediatamente... Cierto?
Pues en tu caso yo lo resolvería poniendo en el evento OnDblClick la sentencia:
Este a su vez llama al OnDrawColumGrid y hace el trabajo de pintura... Obviamente para que te coloree la casilla, debes cambiar la condición en la grilla o tabla antes de llamar al RePaint...
Bueno otra técnica para lograr un repaint es llamar al método INVALIDATE:
<TControl>.Invalidate;
Este se aplica bastante cuando estas creando tus propios componentes... Si algo ha cambiado en el componente tu puedes llamr al Invalidate en lugar de esperar que Windows lo haga cuando detecte un cambio...
Saludos,