AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ListView Flackert

Ein Thema von jokerfacehro · begonnen am 17. Mai 2009 · letzter Beitrag vom 28. Mai 2009
Antwort Antwort
Benutzerbild von jokerfacehro
jokerfacehro

Registriert seit: 13. Feb 2007
306 Beiträge
 
Delphi 7 Enterprise
 
#1

ListView Flackert

  Alt 17. Mai 2009, 11:38
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:
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;
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.

Entweder es gibt ne möglichkeit den TListView flackerfrei zu kriegen oder nen SysListView zu erstellen

schon ma danke im vorraus !

Edit: DoubleBuffered is true


Gruß Jokerface
"Never touch a running system administrator !"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: ListView Flackert

  Alt 17. Mai 2009, 11:47
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)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#3

Re: ListView Flackert

  Alt 17. Mai 2009, 11:48
Schau Dir mal Delphi-Referenz durchsuchenItems.BeginUpdate und Delphi-Referenz durchsuchenItems.EndUpdate an. Damit kannst Du das Flackern ggf. etwas verringern.
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
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von jokerfacehro
jokerfacehro

Registriert seit: 13. Feb 2007
306 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: ListView Flackert

  Alt 17. Mai 2009, 11:53
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)

HLSW

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
"Never touch a running system administrator !"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: ListView Flackert

  Alt 17. Mai 2009, 12:09
Zitat von jokerfacehro:
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.
(wie ich schon sagte ... siehe "Bediehnung" oben)
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von jokerfacehro
jokerfacehro

Registriert seit: 13. Feb 2007
306 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: ListView Flackert

  Alt 17. Mai 2009, 16:38
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

EDIT: BeginUpdate und EndUpdate lassen jetz das listview erst recht flackern, keine ahnung warum.
ohne die beiden flackert es garnicht selbst beim Interval 1sekunden
"Never touch a running system administrator !"
  Mit Zitat antworten Zitat
Freiwilderer

Registriert seit: 26. Mai 2009
163 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: ListView Flackert

  Alt 28. Mai 2009, 07:24
hi, weiß nich, obs noch aktuell ist, aber sonst versuch mal
listview1.DoubleBuffered := true
bei ner anderen liste hat mir das sehr geholfen

mfg
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: ListView Flackert

  Alt 28. Mai 2009, 08:26
@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 .....
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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 15:31 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