//Timer1.Interval auf 20 ms
//Statusbar mit 3 Feldern
private
x, i: Integer;
S: String;
r: TRect;
{ ... }
uses CommCtrl;
{ ... }
procedure TForm1.Timer1Timer(Sender: TObject);
begin
StatusBar1.Perform(SB_GETRECT, 1, integer(@r));
r.Right := r.Right - 1; //-1 wegen dem rechten Rand
r.Left := r.Left + 1; //+1 wegen dem linken Rand
StatusBar1.Repaint;
If (x > (StatusBar1.canvas.TextWidth(S) - r.Left) * -1) then
begin
i := StatusBar1.Canvas.Font.Size div 2; //Die Hälfte der Schrifthöhe berechnen
StatusBar1.Canvas.FillRect(r);
StatusBar1.Canvas.TextRect(r, x, ((r.Bottom - r.Top) div 2) - i, S);
dec(x);
end
else
x := r.Right - r.Left; //Right - Left = Breite des Feldes
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
// statusbar1.Canvas.Font.Color := clBlue;
StatusBar1.canvas.Brush.Style := bsclear;
// statusbar1.Canvas.Font.Size := 12;
S := 'Ich bin ein armer Delphi-Programmierer;
end;