Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: -0.973 c
11-1106058725
Dimona 33321
2005-01-18 17:32
2005.08.28
Проблема с формами MCK


14-1122959574
Ega23
2005-08-02 09:12
2005.08.28
С днем рождения! 2 августа


1-1123159429
Хрюндель
2005-08-04 16:43
2005.08.28
Памогите перевести такой код из Basic в Delfi


14-1123237373
12DFBDDh
2005-08-05 14:22
2005.08.28
У всех форм колбасит или только у меня?


14-1123250460
BiN
2005-08-05 18:01
2005.08.28
"Практические умы" наемников или "киллера вызывали?"




   Наверх