Sources
Delphi Russian Knowledge Base
DRKB - база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Альтернатива для Sleep(), но чтобы приложение не зависало

01.01.2007
jack128

Часто требуется организовать задержку в выполнении кода, но чтобы при этому приложение не зависало, могло реагировать на сообщения Windows, в часности могло перерисовываться.

procedure Delay(ATimeout: Integer);

var
  t: Cardinal;
begin
  while ATimeout > 0 do
  begin
    t := GetTickCount;
    if MsgWaitForMultipleObjects(0, nil^, False, ATimeOut, QS_ALLINPUT) = WAIT_TIMEOUT then
      Exit;
    Application.ProcessMessages;  // Пришли новые сообщения Windwos, обрабатываем их..
    dec(ATimeout, GetTickCount - t);
  end;
end;
Previous page:
Отображение формы выбранного окна
Top:
DRKB
Next page:
Перехват нажатия на системные кнопки формы (закрытие, минимизация окна и т.д.)