Einzelnen Beitrag anzeigen

Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.174 Beiträge
 
Delphi 11 Alexandria
 
#1

StatusBar1.Perform(SB_GETRECT, 1, integer(@r)); WAS ist das?

  Alt 8. Jun 2006, 23:15
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!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat