Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

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/)
-   -   Listview mit Firemonkey (https://www.delphipraxis.net/189101-listview-mit-firemonkey.html)

bra 1. Jun 2016 12:00

AW: Listview mit Firemonkey
 
Zitat:

Zitat von Sherlock (Beitrag 1337854)
Kleine Zwischenfrage zu Deinen Gedanken, Rollo: Warum glaubst Du, daß Bilder aus Dateien zu laden weniger Performant sein soll als sie aus einer SQLite DB zu ziehen? Du weisst, daß SQLite dateibasiert ist? Nur mal so als Denkanstoß ;)

Auf mobilen Systemen rate ich davon ab, Bilder oder Binärdaten in einer SQLite-DB zu speichern. Das ist dort nämlich krötenlangsam.
Steht auch irgendwo in der Doku von SQLite, dass ab einer bestimmten Datengröße die Performance unterirdisch ist.
https://www.sqlite.org/intern-v-extern-blob.html

Peter666 1. Jun 2016 12:34

AW: Listview mit Firemonkey
 
Zitat:

Zitat von Sherlock (Beitrag 1339262)

Außer neu aufbauen, und die betreffenden Items nicht mitzuerzeugen ist mir nichts bekannt. Sorry... FMX ist gegenüber VCL leider in sehr vielen Dingen noch furchtbar weit zurück. Mir fällt da als abschreckendes Beispiel noch das TDateEdit ein...Grauslig.

Sherlock

Das ist doch Mist :( Ich hab gesehen das die Filterfunktion da sowas macht, aber da muss man wohl mehr als nur ein bisschen hand anlegen, wenn man das mit einem eigenen Filter machen will. Schade eigentlich, weil TListview ist bockenlahm. Das fängt schon mit sowas an:

Delphi-Quellcode:
for LItem in FNewItems do
      LItem.CreateObjects;
Hat jemand mal zum Spaß 5000 Einträge oder mehr in eine TListView geschrieben? Das geht recht schnell, aber nach dem Endupdate wird jede Einzelne TListViewItem initialisiert und TAppearanceListView.ResetViewAppearance aufgerufen. Dort erfolgt ein LItemObjects.ResetObjects(AItem, GetFinalItemSize); und zwar von allen Einträgen. Das ganze wäre wesentlich performanter, wenn das nur die sichtbaren Objekte beträfe. So dauert es 3 Sekunden auf einem Android und da kommt dann gerne ein Anwendung reagiert nicht mehr vom System.

Darlo 1. Jun 2016 13:16

AW: Listview mit Firemonkey
 
Hab gerade kein Delphi hier, aber haben ListviewItems einen Parent? Wenn ja kann man ja dadrüber die Sichtbarkeit steuern. Alternativ Height := 0.

Rollo62 1. Jun 2016 14:43

AW: Listview mit Firemonkey
 
Zitat:

Hat jemand mal zum Spaß 5000 Einträge
Ich denke eigentlich ist für solche Fälle der
Delphi-Quellcode:
http://docwiki.embarcadero.com/Libraries/XE7/en/FMX.ListView.TCustomListView.OnPullRefresh
und
PullToRefresh gedacht ist

Aber ich würde mir natürlich wünschen das so etwas clever in die LiveBindings & Datenbankabfragen integriert ist,
das fensterweise nachladen.

Ich vermute mal man muss ales von Hand machen, siehe auch hier.

Jedenfalls lade ich meine Thumbnail-Bilder im Moment als absoluter FileName aus der Sqlite-Tabele, und
lade die dann damit nach in ein MultiResourceBitmap.

In der Hoffnung das niemand tausende Einträge damit macht, aber meine Wunschvorstellung davon wäre eine andere.
Z.B. nur LiveBindings Verbindung von DataSet zu ListView, welche dann automatisch PullToRefresh macht.

Was ich noch testen wollte wäre die Bitmaps als Calculated Field in der DB AdHoc zu Erzeugen, aber das bringt
mir im Moment keine Vorteile.
Vielleicht hat das ja auch schon jemand versucht, das hätte den Vorteil das man sich nicht gezielt um die
Position kümmern muss.
Aber die Frage ist noch wo die Instanz vom Bmp dann eigentlich gespeichert werden soll,
ImageList war nicht unproblematisch, im ListView selbst war auch nicht optimal,
ich mache im Moment ein MultiResBitmap und verlinke im ListViewItem nur die BitmapRef.


Rollo


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:57 Uhr.
Seite 4 von 4   « Erste     234   

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