Para que tu aplicación siga chequeando la cola de mensajes, necesitas llamar de vez en cuando al método Application.ProcessMessages. Esta llamada la deberás poner dentro del bucle donde realices tus operaciones, siempre y cuando te sea posible intercalar esta orden en medio de los procesos que realices; aunque si éstos son operaciones del servidor, mucho me temo que tendrás que esperar a que el servidor termine; me consta que algunos servidores de BD permiten pasarles funciones tipo
Callback para controlar la evolución de los procesos, consultas y demás, y así es posible por ejemplo mostrar una barra de progreso al usuario.
Código:
while not condicion do
begin
... tu proceso
Application.ProcessMessages;
end;
Otra posible solución es que dichos procesos los ejecutes dentro de un
thread aparte (aparte del thread general de la aplicación), de esta forma, aunque no llames a ProcessMessages, la aplicación siempre tendrá su momento de reloj para despachar mensajes.