Bei jedem Klick startest du einfach einen Timer, bzw. startest ihn neu.
Also am Einfachsten so:
Delphi-Quellcode:
ReaktionsTimer.Enabled := False;
ReaktionsTimer.Enabled := True;
Im OnTimer-Ereignis führst du dann deine Bearbeitung durch und vergi nicht den Timer gleich wieder abzuschalten.
Delphi-Quellcode:
ReaktionsTimer.Enabled := False;
... // hier nun dein Code
Eventuell kann man auch im OnTimer-Ereignis, wärend der Bearbeitung, prüfen, ob nochmal das ein Klickereignis reingekommen ist und dann die earbeitung unterbrechen/abbrechen.
Sobald das nächste Timerereignis aus ausgeführt wird, wird dann die verarbeitung neu ausgeführt, bzw. fortgeführt.
Delphi-Quellcode:
// beim Klicken
ReaktionsTimer.Enabled := False;
ReaktionsTimer.Enabled := True;
KlickVariable := True;
Delphi-Quellcode:
// im Timerereignis
ReaktionsTimer.Enabled := False;
KlickVariable := False;
for i := 0 to 1000 do begin
... // hier nun dein Code
Sleep(88); // als Beispiel "nix", darum 'ne Pause
Application.ProcessMessages;
if KlickVariable then break;
end;