Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Flackern eines Label/TLabel verhindern (https://www.delphipraxis.net/186563-flackern-eines-label-tlabel-verhindern.html)

MisterIXI 13. Sep 2015 21:15

AW: Flackern eines Label/TLabel verhindern
 
Zitat:

Zitat von einbeliebigername (Beitrag 1315714)
Hast du mal TStaticText ausprobiert? Oder wenn du unter dem Label/PaintBox aktuell ein Panel hast, schmeiße das Label/die PaintBox weg und setzt die Caption vom Panel. Beim Panel (auch das Panel unter dem Anzeigeelement) mit FullRepaint und ParentBackground experimentieren.

Ja TStaticText hatte ich jetzt die längste Zeit (hatte einmal direkt das Label mit StaticText ersetzt)... ParentBackground hatte ich ebenfals getestet.
FullRepaint habe ich grade mal auf false bzw true gesetzt, hat auch nichts geändert :(


Zitat:

Zitat von einbeliebigername (Beitrag 1315714)
Zum Testen kannst du das so machen, aber besser ist es ein eigene Panel-Klasse zu bauen, diese zu registrieren und im Formulardesigner dann die zu nehmen. Es sollte aber laut meinem Verständnis der Windows-Doku http://msdn.microsoft.com/en-us/libr...55(VS.85).aspx
Delphi-Quellcode:
Message.Result := 1;
sein, damit Windows nicht selbst den Hintergrund löscht/zeichnet.

einbeliebigername.

Würde es einen Unterschied machen eine eigene Panel-Klasse zu bauen? (Ich habe bis jetzt 0 mit selbstgebauten Klassen zu tun gehabt - bzw habe ich auch sonst noch nichts darüber gelernt :> )

Blup 14. Sep 2015 09:15

AW: Flackern eines Label/TLabel verhindern
 
Zitat:

Zitat von MisterIXI (Beitrag 1315720)
Würde es einen Unterschied machen eine eigene Panel-Klasse zu bauen? (Ich habe bis jetzt 0 mit selbstgebauten Klassen zu tun gehabt - bzw habe ich auch sonst noch nichts darüber gelernt :> )

Nein, nur das du bereits in der Entwicklungsumgebung die entsprechende Klasse auswählen kannst.

Das Problem mit dem Flackern entsteht vermutlich durch die getrennten Zeichenvorgänge für den Hintergrund ( WM_ERASEBKGND ) und dem Vordergrund ( WM_PAINT ).
Zeichnet man den Hintergrund bei WM_ERASEBKGND nicht, muss man das aber bei WM_PAINT nachholen. Diverse Transparent-Effekte funktionieren so aber nicht mehr richtig.
Deshalb löst man dieses Problem besser mit "Doppelbuffered := True", allerdings muss das vermutlich bei allen Wincontrols angeschalten werden, die unter dem Label liegen.
(angefangen beim Formular, über alle verschachtelten Panels)

Die Kombination mit Windows-Themen ist nicht möglich, da diese die Steuerelemente selbst zeichnen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:06 Uhr.
Seite 2 von 2     12   

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