Einzelnen Beitrag anzeigen

Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#11

Re: Laufschrift ohne sofort wieder den Anfang zu sehen

  Alt 10. Jan 2005, 22:07
Hallo Aenogym,

ich habe mir erlaubt deinen Code zu verbessern und diesen nur in einem StatusBar-Feld anzeigen zu lassen:

Code:
//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;
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat