Hallo zusammen,
ich habe hier einen Codeteil gefunden der in einer Statusbar eine Laufschrift zeichnet...(zeichnen soll)
Delphi-Quellcode:
private
x, i: Integer;
S:
String;
r: TRect;
{ ... }
uses CommCtrl;
{ ... }
procedure TForm1.Timer1Timer(Sender: TObject);
begin
[u]StatusBar1.Perform(SB_GETRECT, 1, integer(@r));[/u]
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 := '
Es wäre gut, wenn ich das alles verstehen würde! Helft mir bitte dabei...;
end;
Leider verstehe ich von der folgenden Zeile nun überhaupt nichts:
StatusBar1.Perform(SB_GETRECT, 1, integer(@r))
Hier bekomme ich auch eine Fehlermeldung.
Fehlermeldung:
[Fehler] Form1.pas(266): Undefinierter Bezeichner: 'SB_GETRECT'
Meine Fragen wären:
- was ist das
SB-GETRECT, wozu dient es und wie muss es deklariert werden
- warum wird
@r hier so angewendet, bzw. muss so angewendet werden?
Vielen Dank schon mal vorab!