Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Welche Items sind im Sichtbaren Bereich? FMX Listview (https://www.delphipraxis.net/199579-welche-items-sind-im-sichtbaren-bereich-fmx-listview.html)

Markus Effenberger 3. Feb 2019 08:30

Welche Items sind im Sichtbaren Bereich? FMX Listview
 
Kann man irgendwie herausfinden, welche Items der Firemonkey-ListView sich gerade im sichtbaren Bereich befinden?

Hintergrund der Frage: Datenbank SQLite wird genutzt. In Blobfields sind Bilder enthalten, die per Livebindungs in Items zugewiesen werden. Das Filtern der Tabelle (und das anschließende schließen und neuöffnen der Tabelle, damit die Filteränderungen auch dargestellt werden) dauern zu lange. Teilweise mehr als 500ms. Die einzige Lösung, die ich momentan sehe, ist, die Bilder aus der Tabelle wegzulassen und nur dann zuzuweisen, wenn die Items im sichtbaren Bereich liegen.

:cry:

Harry Stahl 3. Feb 2019 09:14

AW: Welche Items sind im Sichtbaren Bereich? FMX Listview
 
Ja, Du kannst für jedes ListviewItem (per Listview.GetItemrect[index]) prüfen, ob es (seine Ausmaße) im Clientbereich der Listview liegt.

Aber davon abgesehen, sind solche Performance-Sachen oft ein vergessenes BeginUpdate und EndUpdate für die Listview (Listbox, etc).

Markus Effenberger 3. Feb 2019 10:02

AW: Welche Items sind im Sichtbaren Bereich? FMX Listview
 
Zitat:

Zitat von Harry Stahl (Beitrag 1424620)
Aber davon abgesehen, sind solche Performance-Sachen oft ein vergessenes BeginUpdate und EndUpdate für die Listview (Listbox, etc).

Krasse Sache... Ich erstaune gerade vor meiner Blödheit :roll: eigentlich sollte ich das nämlich wissen, was du gerade geschrieben hast. Dank Deines Tips, habe ich mir das Projekt nochmal angeguckt und gemerkt, was ich da für einen Denkfehler gemacht habe. Damit andere nicht den gleichen Fehler machen, schreibe ich ihn hier einmal auf: In dem Projekt gab es mehrere ListViews. Drei Listviews davon waren mit nur einer Table über LiveBindings verknüpft. Die zwei anderen ListViews lagen jeweils in nicht sichtbaren Forms (weil sie im Hintergrund lagen). Nun hatte ich das BeginUpdate und EndUpdate vorher nur auf der ListView angewendet, welche auf dem jeweils gerade sichtbaren Form lag.

Nun läuft es (fast) perfekt flüssig! :thumb:

Wie heißt es so schön... Manchmal sieht man den Wald vor lauter Bäumen nicht mehr ;)

Harry Stahl 3. Feb 2019 12:20

AW: Welche Items sind im Sichtbaren Bereich? FMX Listview
 
Zitat:

Zitat von Markus Effenberger (Beitrag 1424622)

Wie heißt es so schön... Manchmal sieht man den Wald vor lauter Bäumen nicht mehr ;)

Das kenn ich! Eine andere schöne Sache (die ich mir selbst hin und wieder auch mal gönne), ist ein BeginScene und EndScene bei Grafik-Mal-Aktionen auf den Canvas zu vergessen. Und dann wundert man sich, dass nichts gezeichnet wird...:stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:57 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