Wie kann ich in meinem Programm eine Pause machen ohne gleich einen Timer benutzen zu müssen?


Die beste Methode, die auch das Multitasking schont, ist eine Kombination dieser beiden Befehle:

  1. sleep(x) versetzt die Anwendung für x Millisekunden (1/1000 sec) in Tiefschlaf, dabei werden aber keinerlei Windows-Botschaften bearbeitet. Dadurch wird also auch das Fenster nicht neu gezeichnet.
  2. Application.ProcessMessages bearbeitet alle Windows-Botschaften, belegt allerdings natürlich auch Prozessorzeit.

Lösung:

MainForm.enabled := false;
for i := 1 to 10 do begin // 1 Sekunde Pause
  sleep(100);
  Application.ProcessMessages;
end;
MainForm.enabled := true;
Delphi 1 Delphi 2 Delphi 3 Delphi 4
nicht getestet Version nicht betroffen getestet

siehe auch:


Delphi FAQ