Hola Rafa, El ejemplo que te ha puesto roberto es correcto, pero el inconveniente que tiene es que si tienes que esperar una gran cantidad de tiempo el programa parece bloqueado. A continuación te pongo una función que se espera una cantidad de tiempo determinada y si te interesa puedes poner o quitar la linea de Application->ProcessMessages (); para que el programa vaya procesando los mensajes que le lleguen.
void __fastcall Esperar (int Milisegundos)
{
TDateTime Hora;
unsigned short Horas, Minutos, Segundos, Milesimas;
int Transcurrido;
Hora = Time ();
do
{
(Time () - Hora).DecodeTime (&Horas, &Minutos, &Segundos, &Milesimas);
Transcurrido = (Minutos * 60000) + (Segundos * 1000) + Milesimas;
Application->ProcessMessages ();
}
while (Transcurrido < Milisegundos);
}
Un saludo,
Angel M. Aranguren