AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi ListView: Wie erkennt man, dass Elemente fertig eingetragen?
Thema durchsuchen
Ansicht
Themen-Optionen

ListView: Wie erkennt man, dass Elemente fertig eingetragen?

Ein Thema von stephan007 · begonnen am 2. Mai 2007 · letzter Beitrag vom 4. Mai 2007
 
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#6

Re: ListView: Wie erkennt man, dass Elemente fertig eingetra

  Alt 3. Mai 2007, 16:17
Hallo, ihr habt diesen Ablauf:

- multithreaded einfügen
- sobald das einfügen beendet ist, resizen

right?

wenn ihr eine codestelle habt, an der ihr definitiv sagen könnt, das einfügen ist abgeschlossen, dann legt eine Criticalsection an, die am anfang des einfügens angefordert und am ende releast wird.
Ein Thread wartet dann nur auf diese CriticalSection (indem er sie anfordert). Sobald er sie bekommt sendet er eine Windows-Message an den Hauptthread, indem als Reaktion auf diese Message das Sizing vorgenommen wird.

Kleine Zwischenfrage: Benutzt ihr bereits BeginUpdate und EndUpdate für die Listview/die subitems?

wenn ihr keine solche codestelle habt, dann braucht ihr eine generelle "listview-access" critical section. Immer, wenn irgendjemand (sprich, irgendein thread) an die listview ranwill, muss er die critical section betreten. damit kann es eigentlich niemals zu zugriffsfehlern kommen.

Wenn ihr vor Beginn des Scans abschätzen könnt, wie viele Antworten ihr bekommt (bei entsprechender designmöglichkeit auch fehlschläge mit einberechenn und rückmelden!), kannst du da ja noch eine hürde einbauen, die erst nach entsprechender anzahl eingegangener ergebnisse (oder einem master timeout) mit dem sizing anfängt.

BTW:

Zitat:
(sowas wie ein Event "Drawfinished" - in die ListView schreiben ist ja eigentlich auch nichts anderes als ein Draw Event (wird einem erst beim Umfärben einzelner Einträge bewußt)
...eigentlich nur wenn die listview virtuell ist. oder wie genau meinst du das? das hinzufügen/verändern von listitems führt nur dann zum sofortigen redraw, wenn du dich nicht(!) in innerhalb eines Beginupdate/endupdate bereichs befindest, wie ich oben bereits angedeutet habe.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
 


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:17 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