Das liegt daran, dass Sleep den Hauptthread lahm legt und einfach keine Verarbeitung der Repaintnachrichten passiert.
Du solltest statt Sleep dieses Delay benutzen:
www.delphipraxis.net...delay+revisited.html
Und wenn du (z.B. in einer Schleife, dann aber am besten nicht bei jedem Durchlauf) einmal visuelle Komponenten aktualisieren willst, dann kannst du das mit Application.ProcessMessages / Komponente.Repaint machen. Das passiert hier aber in dem Delay schon. Wobei Application.Processmessages auch dafür sorgt, dass deine Anwendung noch auf Eingaben reagiert.
Dafür musst du aber dafür sorgen, dass man durch das Klicken von anderen Befehlen während der Schleife dein Programm nicht durcheinanderbringt.
