![]() |
ListView Flackert
Halli Hallo !
ich hab ne schöne TListView mit Report. Ich muss die ListView jede Sekunde aktualisieren, da komm ich nicht drum rum. jetzt flackert die natürlich ganz schön und meine Selection wird gelöscht. Ich fülle die ListView so:
Delphi-Quellcode:
ich mach nen ähnliches Programm wie HLSW. Habe HLSW mit WinSpy durchsucht und nen SysListView gefunden, der die Aufgabe übernimmt, was bei mir der TListView macht.
var item:TListItem;
buffer:TSplit; //(array of String) for i:=0 to Length(buffer)-3 do begin item:=ListView2.Items.Add; buffer2:=Split('"',buffer[i]); buffer3:=Split(' ',buffer2[0]); item.Caption:=IntToStr(i); item.SubItems.Add(buffer2[1]); item.SubItems.Add(buffer3[0]); item.SubItems.Add(buffer3[1]); end; Entweder es gibt ne möglichkeit den TListView flackerfrei zu kriegen oder nen SysListView zu erstellen :D schon ma danke im vorraus ! Edit: DoubleBuffered is true Gruß Jokerface |
Re: ListView Flackert
Probier's mal mit ListView2.Items.BeginUpdate; und ListView2.Items.EndUpdate; vor und hinter deinem Code.
Aber wozu mußt du das denn sekündlich ändern bzw. komplett neu füllen? Wäre es nicht besser/schöner (OK, auch etwas aufwändiger), wenn du nur die Änderungen in den bestehenden ListView-Inhalt einbaust? (würde sich unter Umständen auch vorteilhafter auf die Bediehnung auswirken, bezüglich Scrollen und Selektierung) |
Re: ListView Flackert
Schau Dir mal
![]() ![]() Sonst kannst Dir auch die VirtualTreeView Komponente anschauen, die ist der TListView in sehr vielen Belangen überlegen (aber auch etwas komplexer in der Handhabung)... Viele Grüße |
Re: ListView Flackert
Ok, das flackern verringert sich um 33% ^^
Ich muss jede sekunde den status eines servers abfragen und die daten ändern sich jede sekunde. komischerweise bekommt HLSW dieses problem mit gelöst (benutzt SysListView, weiß nicht ob das nen unterschied macht) ![]() Server: afischi.de:28960 Edit: außerdem geht der scrollbalken jedes mal wieder auf Position(0,0) was sehr stört wenn man ein element bearbeiten will, außerdem wird die selection weggenommen. komischerweise flackern auch nur die Title Captions. der inhalt ist ok hmm |
Re: ListView Flackert
Zitat:
Ja klar, weil du den Inhalt löschst und da dann nix mehr drin ist, wird hochgescrollt. Und was HLSW angeht ... die werden wohl nur den Inhalt in der bestehenden Liste ändern und nicht jedesmal die Liste komplet neu aufbauen. es gibt da 2 grundsätzliche Möglichkeiten: - erstmal eine interne Liste aufbauen und dann die ListView damit abgleichen - direkt in der ListView ändern (notfalls "tote"/gelöschte Einträge markieren und im Anschluß löschen) > also Änderungen überschreiben, Neues per Add/Insert einfügen und Altes löschen |
Re: ListView Flackert
ich hab das problem gelöst.
wie himitsu gesagt hat ^^ extra liste angelegt und alle subitems einzeln übertragen wenn nötig. dadurch bleibt das select erhalten. THX :D EDIT: BeginUpdate und EndUpdate lassen jetz das listview erst recht flackern, keine ahnung warum. ohne die beiden flackert es garnicht selbst beim Interval 1sekunden |
Re: ListView Flackert
hi, weiß nich, obs noch aktuell ist, aber sonst versuch mal
listview1.DoubleBuffered := true bei ner anderen liste hat mir das sehr geholfen mfg |
Re: ListView Flackert
@Freiwilderer: das problem hier war, daß der ListView-Inhalt zwischenzeitlich jede Sekunde komplett geleert und neu befüllt wurde, also kurz garkein Inhalt drin enthalten war, weßhalb da die ListView wirklich leer war.
DoubleBuffered hilft bei diesen langen "leer"-Zeiten nicht wirklich viel, dazumal es auch noch andere Probleme gab, welche sich so nur um eine kurze Zeit verzögert angezeigt würden. - es wurde immer wieder hochgescrollt, die Seletions verschwanden ..... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:10 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