Et en utilisant un Timer ? Par exemple :
Procedure TForm1.Timer1Timer(Sender: TObject);
Begin
If (la_condition) Then LaModalForm.ModalResult:=MrOK;
End;