Nach jedem .Refresh müssen Paint-Message von Windows mit ProcessMessages verarbeitet werden.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
xcolor : TColor;
begin
xcolor := clRed;
for i:=0 to 50 do
begin
ListBox1.Color := xcolor;
ListBox1.Refresh;
Application.ProcessMessages;
// Farbe ändern
case xcolor of
clRed: xcolor := clGreen;
clGreen: xcolor := clblue;
clBlue: xcolor := clRed;
end;
Sleep(200);
if Application.Terminated then Exit;
end;
end;