Если я правильно понял суть вопроса, то нужно добавить всего чуть-чуть 
 
	Код:
	| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | procedureTForm1.Delay (Milliseconds: Integer);
 var
 Tick: DWord;
 Event: THandle;
 begin
 Event := CreateEvent(nil, False, False, nil);
 try
 Tick := GetTickCount + DWord(Milliseconds);
 while(Milliseconds > 0) and
 (MsgWaitForMultipleObjects(1, Event, False, Milliseconds, QS_ALLINPUT) <> WAIT_TIMEOUT) do
 begin
 Application.ProcessMessages;
 Milliseconds := Tick - GetTickcount;
 <font color="Red">ifApplication.Terminated thenExit;</font>
 end;
 finally
 CloseHandle(Event);
 end;
 |