AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi PaintBox zeichnet trotz Invalidate/Update nicht
Thema durchsuchen
Ansicht
Themen-Optionen

PaintBox zeichnet trotz Invalidate/Update nicht

Ein Thema von MacGuyver · begonnen am 14. Apr 2011 · letzter Beitrag vom 14. Apr 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von MacGuyver
MacGuyver

Registriert seit: 9. Sep 2003
Ort: Wildeshausen
295 Beiträge
 
Turbo Delphi für Win32
 
#1

PaintBox zeichnet trotz Invalidate/Update nicht

  Alt 14. Apr 2011, 07:51
Moin Leute

Irgendwie erwische ich immer Fettnäpchen.

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
Englisch eine Weltsprache? Zu kompliziert und der nahe Osten würde Englisch als Pflichtweltsprache nicht akzeptieren.
IDO wäre genau das Richtige: http://forum.idolinguo.de/index.php oder www.idolinguo.de
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#2

AW: PaintBox zeichnet trotz Invalidate/Update nicht

  Alt 14. Apr 2011, 08:19
Klappt es, wenn Du statt Invalidate Repaint verwendest?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: PaintBox zeichnet trotz Invalidate/Update nicht

  Alt 14. Apr 2011, 09:18
invalidate sollte funktionieren, wie sieht der Code im Timer aus, ist der Timer aktiv, OnTimer zugeordnet...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: PaintBox zeichnet trotz Invalidate/Update nicht

  Alt 14. Apr 2011, 09:29
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.

http://www.michael-puff.de/Programmi...enBitmap.shtml
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: PaintBox zeichnet trotz Invalidate/Update nicht

  Alt 14. Apr 2011, 11:31
Wenn es nicht neuzeichnet stimmt dein Handle nicht.

Zitat:
Packe ich kurz ein anderes Fenster dadrüber und nehme es wieder weg, zeichnet er wie er soll.
Logisch dann arbeitet ja auch die Main Form und lößt das Repaint aus.
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

Geändert von EWeiss (14. Apr 2011 um 11:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#6

AW: PaintBox zeichnet trotz Invalidate/Update nicht

  Alt 14. Apr 2011, 11:32
Für PaintBox.Invalidate braucht man kein Handle, das kennt die Komponente ja schon selbst
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: PaintBox zeichnet trotz Invalidate/Update nicht

  Alt 14. Apr 2011, 11:41
Für PaintBox.Invalidate braucht man kein Handle, das kennt die Komponente ja schon selbst
Kenne jetzt die zusammenhänge nicht kein Code.
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
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

AW: PaintBox zeichnet trotz Invalidate/Update nicht

  Alt 14. Apr 2011, 11:45
Zu jeder Paintbox gibt es ein Modell.
Ohne ein Modell ist es nicht möglich, die Anzeige einer Paintbox zu verändern!
Code:
Modell => Visualierung => Paintbox
Also muss der Code im Timer grundsätzlich so aussehen:
Delphi-Quellcode:
procedure TForm1.Timer1OnTimer(...);
begin
  AendereParameterImModell;
  Paintbox1.Invalidate;
end;
Und es gibt noch eine 2. Regel:
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.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#9

AW: PaintBox zeichnet trotz Invalidate/Update nicht

  Alt 14. Apr 2011, 11:46
Nein, TPaintbox empfängt als Nachkomme von TGraphicControl eigene WM_PAINT-Botschaften.

[edit] Post galt Emil, roter Kasten hatte mal wieder Pause. [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: PaintBox zeichnet trotz Invalidate/Update nicht

  Alt 14. Apr 2011, 11:48
Nein, TPaintbox empfängt als Nachkomme von TGraphicControl eigene WM_PAINT-Botschaften.

[edit] Post galt Emil, roter Kasten hatte mal wieder Pause. [/edit]
Ok Danke

OT:
Jup so ein Edit Flag wäre nicht schlecht ..
Anstelle von Geändert von ...

gruss

Geändert von EWeiss (14. Apr 2011 um 11:53 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz