Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.28;
Скачать: CL | DM;

Вниз

PDirList и ListView   Найти похожие ветки 

 
Bil Bal Dur   (2005-01-14 20:45) [0]

Мне нужно вывести список файлов из директории в ListView. Делаю так:

...
lFiles:=NewDirList(lPath,"*.*",FILE_ATTRIBUTE_NORMAL+FILE_ATTRIBUTE_DIRECTORY)
...
for tmp:=0 to lFiles.Count-1 do
 form1.ListView1.LVItemAdd(lFiles.Names[tmp]);

если число файлов 5-10 и более тысяч, то заметно тормозит. а если ещё иконки добавлять, то вообще мрак.

можно ли ускорить этот процесс?


 
Андрей ©   (2005-01-18 12:51) [1]

Возможно, несколько ускорит пара BeginUpdate - EndUpdate, обрамляющая цикл добавления в ListView.


form1.BeginUpdate;
for tmp:=0 to lFiles.Count-1 do
 form1.ListView1.LVItemAdd(lFiles.Names[tmp]);
form1.EndUpdate;


А вообще-то ты пробовал зайти в подкаталог с 10000 файлов FARом или проводником (первый раз, когда инфо не в кэше)? Они тоже тормозят.


 
ECM ©   (2005-01-18 13:28) [2]

В таких случаях необходимо использовать ListView в режиме
"виртуального списка" - сам пользуюсь всегда - тормоза пропадают!
http://www.rsdn.ru/article/controls/virtlist.xml


 
ECM ©   (2005-01-18 13:49) [3]

З.Ы. Естественно тормоза пропадают относительно отображения в ListView - т.к. данные в этом случае НЕ ЗАКАЧИВАЮТСЯ ДОПОЛНИТЕЛЬНО в ListView
а берутся программно только для видимых в данный момент строк.
Тормоза по получению названий 10000 файлов - попрежнему остануться. Но их можно попытаться вынести в отдельный поток.


 
Bil Bal Dur   (2005-01-18 23:05) [4]

Спасибо за участие!!!
Правда я уже и сам дошел до ответа. Сделал через CustomObj, OnLVData, lvoOwnerData, вобщем через "виртуальный" ListView. Правда перед этим 4 дня копался в коде, но зато теперь на всю жизнь запомню!!!
Begin Update и End UpDate мне не помогли.


 
SPeller ©   (2005-01-19 10:52) [5]

Для ускорения добавления большого числа итемов, чтобы после добавления каждого итема listview не перерисовывался, можно использовать WM_SETREDRAW.



Страницы: 1 вся ветка

Текущий архив: 2005.08.28;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.068 c
14-1122969123
Суслик
2005-08-02 11:52
2005.08.28
Няня


1-1123520666
злобная танька
2005-08-08 21:04
2005.08.28
TThread


1-1123600501
_Андрей
2005-08-09 19:15
2005.08.28
Создание формы в потоке, функция которого находится в DLL


14-1122549507
Андрей Жук
2005-07-28 15:18
2005.08.28
Три вещи, без которых нельзя прожить (не моё)


6-1110641616
ТехникПТО
2005-03-12 18:33
2005.08.28
Как загрузить HTML-код в определенный фрейм страницы браузера?