PaintBox.clear will nicht so recht

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Latze
Beiträge: 60
Registriert: Sa 4. Jul 2009, 09:11
OS, Lazarus, FPC: Win7 / Linux (Lazarus 1.4.0)
CPU-Target: 32Bit/64Bit

PaintBox.clear will nicht so recht

Beitrag von Latze »

Ich steh schon wieder blöd vor der Wand:

Ich will eine Druckvorschau in einer PaintBox erstellen. Ich hab also sinnigerweise den Hintergrund auf clWhite und ParentColor auf false. Die PaintBox erscheint aber eben doch in der Farbe des Forms. Eine Textausgabe erscheint mit weißem Hintergrund. Wenn ich bei FormCreate PaintBox.clear setze, bringt es nichts. Aus 'Verzweiflung' hab ich einen zusätzlichen Button mit der Funktion PaintBox.clear erstellt und mehrfaches (2×) klicken löscht dann wirklich die PaintBox, wenn sie noch leer ist. Schreib ich zuerst etwas in die Box (Druckvorschau) wird sie sofort gelöscht.

Jemand 'nen Tip?
Wer glaubt, etwas zu sein, hat aufgehört, etwas zu werden.

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: PaintBox.clear will nicht so recht

Beitrag von theo »

Füllen?

Code: Alles auswählen

PaintBox1.Canvas.Brush.Color:=clred;
 PaintBox1.Canvas.FillRect(PaintBox1.ClientRect);

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: PaintBox.clear will nicht so recht

Beitrag von pluto »

Um eine Clear Funktion zu erstellen musst du legendlich alles einmal in einer Farbe übermalen.
(Der Kommentar zu Theo's Code*G*)
MFG
Michael Springwald

Latze
Beiträge: 60
Registriert: Sa 4. Jul 2009, 09:11
OS, Lazarus, FPC: Win7 / Linux (Lazarus 1.4.0)
CPU-Target: 32Bit/64Bit

Re: PaintBox.clear will nicht so recht

Beitrag von Latze »

Ich muss da wohl noch 'nen anderen Fehler dabei haben. Den Code habe ich in TForm1.FormCreate eingefügt, es funktioniert nur leider nicht, PaintBox1 bleibt grau. Ich habe auch noch ein PaintBox1.Canvas.Refresh dahinter gepackt, leider auch nichts. PaintBox hat da wohl noch ein Geheimnis für mich.
Wer glaubt, etwas zu sein, hat aufgehört, etwas zu werden.

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: PaintBox.clear will nicht so recht

Beitrag von theo »

Vllt. besser auf TPaintBox verzichten und sowas machen:
http://wiki.lazarus.freepascal.org/Deve ... t_zeichnet

Latze
Beiträge: 60
Registriert: Sa 4. Jul 2009, 09:11
OS, Lazarus, FPC: Win7 / Linux (Lazarus 1.4.0)
CPU-Target: 32Bit/64Bit

Re: PaintBox.clear will nicht so recht

Beitrag von Latze »

Danke, ich werde es mal damit probieren. Aber eins interessiert mich dann doch noch: Bin ich zu blöd für PaintBox, sollte ich mein System mal kontrollieren oder gibt es in der PaintBox einfach noch ein paar Bugs?
Wer glaubt, etwas zu sein, hat aufgehört, etwas zu werden.

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: PaintBox.clear will nicht so recht

Beitrag von theo »

Keine Anhnung.
Der Sinn von TPaintBox hat sich mir noch nie so ganz erschlossen. Ich benutze das Ding nie.

Latze
Beiträge: 60
Registriert: Sa 4. Jul 2009, 09:11
OS, Lazarus, FPC: Win7 / Linux (Lazarus 1.4.0)
CPU-Target: 32Bit/64Bit

Re: PaintBox.clear will nicht so recht

Beitrag von Latze »

Dann bin ich wenigstens nicht allein. Text ausgeben schaff ich, Linien zeichnen auch... In FormCreate will bei mir nichts funktionieren und immer erst ein Button klicken, damit der Bereich weiß wird finde ich nicht so prickelnd, wenn sich ein Fenster mit der Vorschau und ein paar Optionen öffnen soll.

TImage funktioniert jedenfalls. Sowohl die Ausgabe als auch das Initialisieren in FormCreate :D Danke
Wer glaubt, etwas zu sein, hat aufgehört, etwas zu werden.

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: PaintBox.clear will nicht so recht

Beitrag von Hitman »

Es hat einen Grund, dass die PaintBox ein OnPaint event hat! Die PaintBox "speichert" nicht, was ihr da auf den Canvas malt. Unter Windows kann man das z.B. ganz gut verfolgen, indem man das Formular dann mal kurz über den Bildschirmrand hinaus zieht und dann wieder zurück holt. Dann ist nämlich auf der Paintbox nicht mehr viel zu sehen. Daher: in ein TBitmap malen, und im OnPaint auf die PaintBox kopieren. Das verhindert zudem Flackern.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: PaintBox.clear will nicht so recht

Beitrag von pluto »

Dein Fehler ist einfach: Du verwechselst die PaintBox mit einem TImage. Das TImage speichert das Bild in einem Buffer, die PaintBox nicht. Beide Komponenten sind Praktisch, je nach Aufgabe.
Das gleiche gilt auch, wenn du eine Komponente von "TCustomControl" ableitest. Du kann dann auch nicht einfach das Bild im onCreate erstellen, weil es dann wieder überzeichnet wird.
MFG
Michael Springwald

Antworten