Supongo que la forma mas sencilla de todas es crear un form que de el mensaje. Antes de lanzar la consulta lo muestras y una vez que tengas el resultado lo quitas.
Pon todo en un bloque try...finally, para que a pesar de que falle, esconda el Form del mensaje.
- Este Form, puede tener un Label en medio y centrado, que puedas cambiar para cada consulta "lenta".
- Tambien puede tener un timer, que muestre algún movimiento (un punto, dos puntos, tres puntos, un punto ...)
- O puede tener una barra que se vaya llenando con ese timer.
Código Delphi
[-]
begin
try
FCalculando.Show;
FCalculando.LabelMensaje.Caption := 'Calculando Totales de ????. Espere por favor...';
;
finally
FCalculando.Hide;
end;
end;