Zitat:
ist villeicht ein ganz anderer Ansatz sinnvoller.
...Idee?
Ich verwende dafür wie auch schon genannt wurde Threads. Dafür kannst du dir einmal eine passende Klasse bauen, die auch wirklich sehr einfach ist, und dann immer nutzen.
Das mache ich dann so:
Ich verwende ein TEvent zur Signalisierung, dass ein Scrollevent aufgetreten ist. Daraufhin setzt der Thread das Event zurück und wartet erneut auf das Event mit der vorgegebenen Zeit als Timeout (Event.WaitFor). Tritt nun in der Zwischenzeit das Event erneut auf (Ergebnis wrSignaled), wartet der Thread erneut. Ist das Ergebnis der Warteoperation der Timeout (Ergebnis wrTimeOut), wird ein OnExecute-Ereignis gefeuert, so dass die Verarbeitung starten kann.
So stellst du sicher, dass nach dem letzten Scrollereignis genau die gewünschte Zeit vergeht.