Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#12

AW: Paintbox- Text schreiben

  Alt 5. Nov 2010, 06:15
Dein Code enthält leider einige Fehler.
1.) im OnPaint-Event procedure TForm1.PaintBox1Paint darf nur gezeichnet werden und nichts anderes

Zum Beispiel ist diese Grössenanpassung
Delphi-Quellcode:
//Paintbox an Panel
PainBox1.Height:=Blatt.Height;
PaintBox1.Width:=Blatt.Width;
verboten. Man muss das schon viel früher ausführen.
Aber Besten man setzt das Property Align der Paintbox auf alClient und spart sich die Zuweisung von Breite und Höhe.

2.) du erzeugst dynamisch eine Paintbox
Delphi-Quellcode:
// Paintbox erstellen
PaintBox1:=TPaintbox.Create(self);
PaintBox1.Parent:=Panel1;
Das geht gar nicht, denn die Paintbox muss natürlich schon früher erzeugt worden sein.
Wenn du innerhalb von OnPaint eine neue Paintbox erzeugst ist das natürlich tödlich.
Du hast zwei verschiedene Paintboxen (wobei eine sinnigerweise Painbox1 also auf Deutsch: "SchmerzBox1" heisst ) was ziemlich verwirrend ist.

Hier mal der bereinigte Code für nur eine Paintbox:
Delphi-Quellcode:
procedure TForm1.PaintBox1Paint(Sender: TObject);
var Schrift: string;
    canvas : TCanvas;
begin
   // zuerst den Canvas der Paintbox holen
   canvas := (Sender as TPaintBox).Canvas;
   // auch folgende Schreibweise wäre möglich
   canvas := PaintBox1.Canvas;
   
   // Paintbox weiß färben
   canvas.brush.color:=clwhite;
   canvas.FillRect(Rect(0,0,PaintBox1.width,PaintBox1.height));

   // Textausgabe
   canvas.Brush.Color := clBlack;
   Schrift:= 'Hallo Welt';

   canvas.TextOut((PaintBox1.Width div 2)-25, 70,Schrift);
end;
  Mit Zitat antworten Zitat