![]() |
PaintBox zeichnet trotz Invalidate/Update nicht
Moin Leute :hi:
Irgendwie erwische ich immer Fettnäpchen. :lol: Ich habe eine PaintBox auf eine Form gepackt und onPaint ausprogrammiert. Über einen Timer prüfe ich, ob neu gezeichnet werden muss. Ist das der Fall, führe ich ein Invalidate auf der PaintBox aus. Schön und gut. Das Teil zeichnet sich nicht neu. Packe ich kurz ein anderes Fenster dadrüber und nehme es wieder weg, zeichnet er wie er soll. Es ist zum Verzweifeln Stefan |
AW: PaintBox zeichnet trotz Invalidate/Update nicht
Klappt es, wenn Du statt Invalidate Repaint verwendest?
|
AW: PaintBox zeichnet trotz Invalidate/Update nicht
invalidate sollte funktionieren, wie sieht der Code im Timer aus, ist der Timer aktiv, OnTimer zugeordnet...
|
AW: PaintBox zeichnet trotz Invalidate/Update nicht
Wozu einen Timer? Wenn das fenster neugezeichnet werden muss, wird doch automatisch ein OnPaint ausgelöst und das kannst du auch manuell bei Bedarf auslösen.
![]() |
AW: PaintBox zeichnet trotz Invalidate/Update nicht
Wenn es nicht neuzeichnet stimmt dein Handle nicht.
Zitat:
In dem Fall werden alle Kinder die sich auf der Form befinden neugezeichnet. Setz mal den Clienten zum Screen hole dir dann den Record und führe ein Invalidate auf der Mainform aus. Dann zeichnet auch die PaintBox neu. gruss |
AW: PaintBox zeichnet trotz Invalidate/Update nicht
Für PaintBox.Invalidate braucht man kein Handle, das kennt die Komponente ja schon selbst ;)
|
AW: PaintBox zeichnet trotz Invalidate/Update nicht
Zitat:
Mitunter ist es zwingend notwendig das Invalidate auf der Mainform auszuführen da Paintbox ein Kind der Mainform ist muss diese Automatisch mit neuzeichnen oder? gruss |
AW: PaintBox zeichnet trotz Invalidate/Update nicht
Zu jeder Paintbox gibt es ein Modell.
Ohne ein Modell ist es nicht möglich, die Anzeige einer Paintbox zu verändern!
Code:
Also muss der Code im Timer grundsätzlich so aussehen:
Modell => Visualierung => Paintbox
Delphi-Quellcode:
Und es gibt noch eine 2. Regel:
procedure TForm1.Timer1OnTimer(...);
begin AendereParameterImModell; Paintbox1.Invalidate; end; Grundsätzlich (ohne Ausnahme) darf man nur innerhalb des Events OnPaint auf den Canvas der Paintbox zugreifen! Es ist also verboten im Event OnShow der Formular oder aus einem Timer heraus auf den Canvas der Paintbox zu zeichnen. |
AW: PaintBox zeichnet trotz Invalidate/Update nicht
Nein, TPaintbox empfängt als Nachkomme von TGraphicControl eigene WM_PAINT-Botschaften.
[edit] Post galt Emil, roter Kasten hatte mal wieder Pause. [/edit] |
AW: PaintBox zeichnet trotz Invalidate/Update nicht
Zitat:
OT: Jup so ein Edit Flag wäre nicht schlecht .. ;) Anstelle von Geändert von ... gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz