Ich schreibe gerade an einem Programm, das eine ListView enthält. Dabei sind einige Fragen entstanden.
1. Frage: In der Help-File steht unter Limits, dass man maximal 4093 Control-Elemente erstellen kann. Weil jedes ListViewItem ein eigenes Control-Element ist, kann man also maximal 4092 ListViewItems in einer ListView erstellen. Richtig? Und was würde passieren, wenn diese Grenze doch überschritten wird?
2. Frage: In dem Programm, das ich gerade schreibe, enthält die ListView momentan 350 ListViewItems. Ich schätze, dass es irgendwann um die 1000 ListViewItems sein werden. Kann man voraussagen, ab wie viel ListViewItems die Performance problematisch werden könnte?
Ich arbeite wie gesagt an einem Programm mit einer ListView. Ich möchte kurz die grundlegende Programmfunktion meiner ListView skizzieren:
Die ListView zeigt eine Anzahl von ListViewItems. Über separate Combos und Inputs kann der Benutzer eine Auswahl treffen. Die ListView soll dann nur noch den passenden Teil der gesamten Anzahl an ListViewItems anzeigen. Diesbezüglich habe ich verschiedene Lösungsansätze entworfen, bin aber zu keinem zufriedenstellenden Schluss gekommen.
1. Ansatz: Die unpassenden Items werden ausgeblendet. Ändert sich die Auswahl erneut, können die Items bei Bedarf wieder eingeblendet werden. Der Ansatz scheitert daran, dass sich ListViewItems nicht mittels $GUI_HIDE ausblenden lassen.
2. Ansatz: Die unpassenden Items werden gelöscht. Ändert sich die Auswahl erneut, müssen die Items bei Bedarf neu erstellt werden. Problematisch ist, dass ich die erneut erstellten Items nicht an ihrer alten Position wieder erstellen konnte. Sie werden hinter das letzte Item angefügt, sowohl Layout-technisch als auch bezüglich der Nummern der controlIDs. Dadurch entstand ein solches Durcheinander, dass meine Programmroutinen sich nicht mehr wie geplant verhielten und unvorhergesehene Ergebnisse rauskamen. Außerdem entsteht durch das ständige Hinten-ranfügen ein weiteres Problem: die controlIDs könnten leicht über die Nummer 4093 kommen (während die tatsächliche Anzahl an ListViewItems bei (zur Zeit) maximal 350 bleiben würde). Ich bin mir nicht sicher, ob dann die Beschränkung durch das oben erwähnte Limit greifen würde.
3. Ansatz: Es werden erst alle Items gelöscht, und dann nur die passenden Items neu erstellt. Bei jeder Änderung der Auswahl würden also zunächst alle Items gelöscht. Dieser Ansatz funktionierte im Gegensatz zu den anderen wenigstens, aber es entstehen schon bei 350 Items unnötig lange Wartezeiten bis das Ergebnis erscheint.
Welche Vorschläge habt ihr? Oder sind noch Dinge unklar?