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]