Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Label flackert bei Aktualisierung (https://www.delphipraxis.net/77501-label-flackert-bei-aktualisierung.html)

dm007 20. Sep 2006 14:02


Label flackert bei Aktualisierung
 
Hallo @All,

Ich habe ein Label, das ich mit einem Timer aktualisiere.

Delphi-Quellcode:
procedure TForm1.Timer2Timer(Sender: TObject);
begin
  RzLabel1.Caption := DateTimeToStr(Time);
end;
Das funktioniert auch, aber das Label flackert bei der Aktualisierung in der Form.
Kann ich das wegbekommen?

Gruß DM007

Klaus01 20. Sep 2006 14:06

Re: Label flackert bei Aktualisierung
 
Hast Du das ParentControl (Form1) auf DoubleBuffered:=true gestellt?

Grüße
Klaus

dm007 20. Sep 2006 14:14

Re: Label flackert bei Aktualisierung
 
Sorry,
ich mache meine ersten Gehversuche mit Delphi.
Wenn Du mit 'ParentControl (Form1)' -> 'ParentBiDiMode := True' meinst? Dann habe ich das so.

Achso, das Label liegt auf einem Panel.

Gruß DM007

Balu der Bär 20. Sep 2006 14:16

Re: Label flackert bei Aktualisierung
 
Doppelklickt auf das Formular, der Quelltexteditor mit der Prozedur Form1.Create sollte sich öffnen, dort schreibst du hinein:
Delphi-Quellcode:
Form1.DoubleBuffered := true;
:-)

hoika 20. Sep 2006 14:18

Re: Label flackert bei Aktualisierung
 
Hallo,

nein, er sagte das ParentControl, in deinem Fall als das Panel.
Das PanelX.DoubleBuffered musst du im Code machen,
also z.B. in FormCreate.


Heiko

dm007 20. Sep 2006 14:20

Re: Label flackert bei Aktualisierung
 
Jep,
Du warst jetzt schneller, habe ich gerade selber gefunden, jetzt geht es.
Wie findet man sowas nur raus :shock:
Toll so ein Forum.

Vielen Dank
DM007

dm007 20. Sep 2006 14:42

Re: Label flackert bei Aktualisierung
 
Nein, Kommando zurück. Es ist zwar besser geworden, aber manchmal blitzt es doch noch. ca alle 40sec.
Hat einer, noch eine Idee?

DM007

Maiky 31. Aug 2017 10:21

AW: Label flackert bei Aktualisierung
 
Nicht böse sein, das Thema mag alt sein, ist aber noch aktuell für mich. :)


Ich habe 48 Labels die ich alle ca. 100ms aktualisieren muss. Diese geben Messdaten aus und flackern leider. Zum Test habe ich eine Form erstellt mit einem TPanel und darin jeweils 24 TLabel und 24 TStaticLabel, welche über einem Timer gleichzeitig deren Inhalt um +1 hochgezählt werden.

TStaticLabel flackern ebenfalls, nur um Gegensatz zu TLabel nicht gleichzeitig, sondern jedes für sich vereinzelt. Ich habe den Container (TPanel) auch auf DoubleBuffered gesetzt, wodurch die TLabel noch stärker flackern, bei den TStaticLabel änderte sich aber nichts.

Gibt es noch eine Möglichkeit schnell ändernde Daten anzuzeigen, ohne das Flackern?

Nutze noch Rad Studio 2009. :)

Blup 31. Aug 2017 10:48

AW: Label flackert bei Aktualisierung
 
DoubleBuffered muss bei allen Containern gesetzt werden, auf denen das Label direkt oder indirekt liegt.
In diesem Besipiel bei Form, Panel1 und Panel2:
Code:
-Form1-------------
|
|-Panel1----------
|| -Panel2--------
|| |
|| | Label
|| |
|| ---------------
|------------------
|
-------------------

jaenicke 31. Aug 2017 10:52

AW: Label flackert bei Aktualisierung
 
So viele Labels sind ein ziemlicher Overhead. Ich würde eine Paintbox benutzen, die Daten im Hintergrund auf eine Bitmap zeichnen und die dann nur noch schnell drüberkopieren (Draw, BitBlt).

haentschman 31. Aug 2017 12:19

AW: Label flackert bei Aktualisierung
 
Moin...:P
Zitat:

Ich habe 48 Labels die ich alle ca. 100ms aktualisieren muss
:shock: Wer kann das lesen? Reicht da nicht eine Sekunde?

Frage:
ApplicationProcessMessages oder Repaint in der Aktualisierung?

jaenicke 31. Aug 2017 12:28

AW: Label flackert bei Aktualisierung
 
Wirklich lesen kann man das zwar nicht, aber grob bekommt man die Werte schon mit.

Papaschlumpf73 31. Aug 2017 14:56

AW: Label flackert bei Aktualisierung
 
Viel schneller als Label1.Caption:='abc' und ohne flackern...
Einen Timer mit 100 ms einstellen und mit "Paintbox1.Repaint" ausführen
Delphi-Quellcode:
procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
Paintbox1.Canvas.TextOut(0,0,'dein Text'); //den Text immer noch mit Leerzeichen auffüllen oder letzten Inhalt vorher löschen
end;

jaenicke 31. Aug 2017 15:58

AW: Label flackert bei Aktualisierung
 
Aber auch das flackert etwas. Besser ist wie gesagt eine Hintergrundbitmap zu benutzen, damit das Zeichnen auf die eigentliche Zeichenfläche nur so kurz wie möglich dauert:
http://michael-puff.de/Programmierun...enBitmap.shtml


Alle Zeitangaben in WEZ +1. Es ist jetzt 12: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