Einzelnen Beitrag anzeigen

einbeliebigername

Registriert seit: 24. Aug 2004
140 Beiträge
 
Delphi XE8 Professional
 
#10

AW: Flackern eines Label/TLabel verhindern

  Alt 13. Sep 2015, 19:42
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 :< )
Da hast du mich nicht vollständig verstanden. Die Lösung von Zacher ist ein TControl auf ein TWinControl gelegt. Das TControl bekommt ständig neuen Text und animiert das TWinControl sich neuzuzeichnen.

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.

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 (?).
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 Message.Result := 1; sein, damit Windows nicht selbst den Hintergrund löscht/zeichnet.

einbeliebigername.
  Mit Zitat antworten Zitat