AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Flackern von Listbox verhindern
Thema durchsuchen
Ansicht
Themen-Optionen

Flackern von Listbox verhindern

Ein Thema von EWeiss · begonnen am 14. Mai 2015 · letzter Beitrag vom 14. Mai 2015
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

Flackern von Listbox verhindern

  Alt 14. Mai 2015, 20:32
Bei jeden erzwungenen Repaint des Haupt Formular flackert die Listbox.
Ich erstelle die ListBox mit CreateWindowEx.
Diese wird anschließend gesubclassed.

Ich achte darauf das die ListBox beim erstellen des Windows keine Style verwendet.
Bsp. CS_HREDRAW or CS_VREDRAW..

Ich achte darauf das in der WinProc WM_ERASEBKGND stets 1 zurückgibt.
Habe versuche mit WM_SETREDRAW angestellt usw..
Auch das setzen von LBS_NOREDRAW führt nicht zum Erfolg.

Bekomme das Flackern einfach nicht weg.
Also nicht die Einträge oder das zeichnen derjenigen sondern das der kompletten Listbox wenn die Form aktualisiert.

Mir fällt jetzt nicht ein was ich da noch machen könnte um dieses leidige Problem zu beseitigen.

Ein Begin und Endupdate bringt auch nichts da NonVcl..
Dürfte aber auch mit WM_SETREDRAW gleichzusetzen sein.
All anderen Controls verhalten sich still nur die ListBox hüpft da rum.

gruss

Geändert von EWeiss (14. Mai 2015 um 20:36 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Flackern von Listbox verhindern

  Alt 14. Mai 2015, 21:29
Evtl. ListBox1.DoubleBuffered := True; ?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: Flackern von Listbox verhindern

  Alt 14. Mai 2015, 21:35
Es wird nicht die VCL-TListBox verwendet.

Aber ja, sowas wäre die Lösung.
Dein Problem ist, daß deine Form scheinbar den Hintergrund erst neu zeichnet, oder die Listbox den Hintergrund erstmal komplett platt macht, bevor sich die ListBox erneut drauf malt und das muß zwangsläufig in einem Flackern enden.
$2B or not $2B
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Flackern von Listbox verhindern

  Alt 14. Mai 2015, 21:38
Es wird nicht die VCL-TListBox verwendet.

Aber ja, sowas wäre die Lösung.
Dein Problem ist, daß deine Form scheinbar den Hintergrund erst neu zeichnet, oder die Listbox den Hintergrund erstmal komplett platt macht, bevor sich die ListBox erneut drauf malt und das muß zwangsläufig in einem Flackern enden.
Die ListBox verwendet keinen DoubleBuffer hingegen die Hauptform schon.

Habe es jetzt mal mit den Winstyles versucht.
WS_POPUP or WS_CLIPCHILDREN or WS_CLIPSIBLINGS;

Allerdings werden mir dann die Einträge in der Listbox nicht neugezeichnet.
Flackern tut dann nichts mehr.. bringt mich aber auch nicht weiter.

gruss

Geändert von EWeiss (14. Mai 2015 um 22:58 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:41 Uhr.
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