Einzelnen Beitrag anzeigen

Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#1

[update] Laufschrift in StatusBar-Feld

  Alt 30. Jan 2005, 21:10
hi,

folgender code realisierteine laufschrift im feld einer TStatusBar. man benötigt einen timer und natürlich eine TStatusBar. Teile des Codes stammen von helmi.

Delphi-Quellcode:
uses commctrl;

private
  x, i: Integer;
  S: String;
  r: TRect;

const
  FieldNum = 0; //gibt an, in welchem Feld der Text erscheinen wird

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  //rect des feldes bekommen
  StatusBar1.Perform(SB_GETRECT, FieldNum, 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;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  StatusBar1.DoubleBuffered := True; //verhindert Flackern

  StatusBar1.canvas.Brush.Style := bsclear;
  //hier kann auch die schriftart bestimmt werden:
  //statusBar1.canvas.Font.Color := clBlue;

  x := 0;
  for j := 0 to FieldNum do
    begin
      x := x + StatusBar1.Panels[j].Width;
    end;

  //der text, der durchläuft
  S := 'Ich bin ein armer Delphi-Programmierer';
end;
update in der ersten zeile des FormCreate-Events und einen verschreiber einer variablen.
(so, wie der code derzeit in der CodeLibrary ist, ist er falsch)

Aenogym

[edit=Chakotay1308]Code in der Code-Library geupdatet. Update ist nun hier zu finden. Mfg, Chakotay1308[/edit]
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat