Форум: "KOL";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "KOL";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.036 c