[Delphi] Przyspieszanie ListView

0

Chciałem się dowiedzieć czy macie jakieś ciekawe sposoby na przyspieszenie ładowania danych do ListView. Do listy pakuje nawet 6000-10000 rekordów! . Samo załadowanie ich z pliku do dynamicznej tablicy trwa ułamek sekundy dzięki BlockRead ale z ładowaniem do listy jest już dużo gorzej, zwłaszcza jak się ma 7 subitemów i do tego ikony :-/ . Dzięki Application.ProcessMessage troche lepiej to wygląda ale przez to że odrysowywany jest każdy item po dodaniu, ładowanie trwa jeszcze dłużej (ok 10-12 sek.) . Próbowałem na czas ładowania całkowicie ukryc ListView, zyskałem kilka sekund ale to i tak nie jest to. Obecnie pracuje nad własnym systemem ładowania listview, podobnego którego mamy w komponentach bazodanowych SQL, np. DBGrid. Będe pobierał określoną ilość danych z pliku, jak user będzie przesuwał scrollem to będą na bieżąco pobierane nowe porcje danych. Nie wiem co z tego wyjdzie ale jestem dobrej myśli. Znacie jakieś inne, szybsze komponenty? W paczce Jedi są jakieś ciekawe? A może VirtualTreeView mimo swojej możliwości rozbudowania jest szybszy?

BTW: Przypomnienie hasła forum działa? Drugi raz wysyłam w tym tygodniu i nic nie dostaje :(

0
Dibo1984 napisał(a)

ale przez to że odrysowywany jest każdy item po dodaniu, ładowanie trwa jeszcze dłużej (ok 10-12 sek.) .

BeginUpdate wyłączy Ci odrysowywanie kazdego itemu po dodaniu, potem dajesz EndUpdate. To są o ile pamietam metody TListView.items

0

VirtualTreeView i nie łądujesz wszystkich od razu do vtv tylko te, które on potrzbuje - zobacz sobie demka tam to jest

0

Właśnie na stronie VirtualView przeczytałem że wczytanie 1 miliona rekordów trwa tylko 700mili sekund!! Że też wcześniej się nie zainteresowałem bardziej tym komponentem. Dzięki Misiek [browar]

0

Ja od siebie dodam, że zawsze takie rzczy robię w osobnym wątku. Dzięki temu okno programu działa normalnie, a użytkownik może spauzować i wznowić wczytywanie lub całkowicie zatrzymać. Pozdrawiam xD

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.