![]() |
Label flackert bei Aktualisierung
Hallo @All,
Ich habe ein Label, das ich mit einem Timer aktualisiere.
Delphi-Quellcode:
Das funktioniert auch, aber das Label flackert bei der Aktualisierung in der Form.
procedure TForm1.Timer2Timer(Sender: TObject);
begin RzLabel1.Caption := DateTimeToStr(Time); end; Kann ich das wegbekommen? Gruß DM007 |
Re: Label flackert bei Aktualisierung
Hast Du das ParentControl (Form1) auf DoubleBuffered:=true gestellt?
Grüße Klaus |
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 |
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;
|
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 |
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 |
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 |
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. :) |
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 || | || --------------- |------------------ | ------------------- |
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).
|
AW: Label flackert bei Aktualisierung
Moin...:P
Zitat:
Frage: ApplicationProcessMessages oder Repaint in der Aktualisierung? |
AW: Label flackert bei Aktualisierung
Wirklich lesen kann man das zwar nicht, aber grob bekommt man die Werte schon mit.
|
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; |
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:
![]() |
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