Ich habe gerade eine "for" Schleife erstellt die ein Listview mit 999 Einträgen füllt. Und ich habe auch dein CustomDrawItem hingehängt (dementsprechend abgeändert).
Sofort nach dem Mausklick ist bei mir das Listview gefüllt.
Der Flaschenhals muss also irgendwo beim Abrufen deiner Daten sein. Also folgenden Performancetipp könnte ich dich noch geben:
1. Setze die Eigentschaft "LockType" vom ADOQuery auf "ltReadOnly". Das hat folgenden Sinn: du willst die Daten ja nicht verändern, so wird etwas Overhead gespart, da die ADOQuery sich nicht darauf vorbereiten muss Daten eventuell abzuändern.
2. Nachdem du die
Query ausgeführt hast (nach Open), setze die Connection des ADOQuery auf "nil". Das hat folgenden Sinn: die Daten werden dann lokal im ADOQuery "gespeichert" (so eine Art FetchAll). Somit hast du alle Daten "bei dir".
Ich hoffe ich konnte dir mit den Tipps helfen!
Noch eine Frage interessehalber: Auf welcher Datenbank setzt deine Connection auf? (MS
SQL?)
Gruss,
Marc
------
PRO IT SYSTEMS