Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.029 c
6-1116237803
BanderLog
2005-05-16 14:03
2005.08.28
TIdTCPServer - обрыв связи


14-1123229357
ПЛОВ
2005-08-05 12:09
2005.08.28
Сколько осталось жить флопикам?


3-1121678652
serjufa
2005-07-18 13:24
2005.08.28
TQuery и неполное соответствие


4-1121060219
NeoMaster
2005-07-11 09:36
2005.08.28
Синхронные и асинхронные запросы


4-1121315097
unregister_256
2005-07-14 08:24
2005.08.28
ShellAbout()





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский