Einzelnen Beitrag anzeigen

MisterIXI

Registriert seit: 4. Jun 2015
15 Beiträge
 
Delphi 7 Personal
 
#9

AW: Flackern eines Label/TLabel verhindern

  Alt 12. Sep 2015, 23:41
Wie siehts aus, wenn du statt eines Labels die PaintBox verwendest und dann diesen Trick nutzt:
http://www.delphipraxis.net/1315249-post2.html
Wenn ich das ganze richtig verstanden und implementiert habe, dann scheint das wohl auch nicht wirklich zu klappen... Es scheint ein kleines bisschen besser geworden zu sein, aber da bin ich mir auch nicht sicher


ich hatte/habe das gleiche Problem. Bei mir ist es die Ausgabe eines Video-Timecodes (Aktualisierungsinterval 16,66... bis 41,66... ms). Statt TLabel besser TPanel oder TStaticText verwenden. Auf jedenfalls eine Klasse welche von TWinControl stammt. Grund alles was nur von TControl und nicht von TWinConrol stammt wird vom Parent gezeichnet. Dort lassen sich Flackereffekte nur schwer abstellen. Vermutlich wirst du dir eine eigene Klasse (wie ich) bauen müssen. Dabei auf WM_ERASEBKGND achten.
Hört sich für mich ähnlich zu der Antwort von Zacher an. (Ich muss dazu sagen, dass ich davor noch nie wirklich mit Klassen im Programmieren zu tun hatte :< )

Effektiv habe ich zum testen ein Panel hinzugefügt, und ein PaintBox objekt reingesetzt. Den Timer entsprechend umgeschrieben und noch folgenden Code implementiert (vom Link der Lösung von Zacher):
Code:
type
  TPanel = class(ExtCtrls.TPanel)
    procedure WMEraseBkgnd(var Message: TWmEraseBkgnd); message WM_ERASEBKGND;
    end;
  TForm1 = class(TForm)
Code:
 procedure TPanel.WMEraseBkgnd(var Message: TWmEraseBkgnd);
begin
  Message.Result := 0;
end;
wobei ich diesen Wert auch auf 1 gesetzt habe und es hat wohl ein bisschen besser funktioniert (?).
  Mit Zitat antworten Zitat