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

Вниз

Производительность TListView   Найти похожие ветки 

 
LuckyMan ©   (2003-06-28 20:08) [0]

Есть в Делфи такой хороший компонентик, используемый мной для отображения списка файлов (не с диска), но его производительность добавления/очистки файлов порядка 12000 оставляет желать лучшего... Есть ли какая-нибудь альтернатива с похожими возможностями, но с улучшенной производительностью?


 
jack128 ©   (2003-06-28 20:15) [1]

наврятли.. 12000 строк врятли какой нить визуальный компонент выдержит.
Ты лудше скажи, нафиг ты юзеру показываешь так много строк???


 
[NIKEL] ©   (2003-06-28 20:25) [2]

у этого прекрасного компонентика есть не менее прекрасный режим отображения списков - виртуальный режим
ключевые слова
OwnerDraw
OnData и все что с ним связано


 
LuckyMan ©   (2003-06-28 22:17) [3]

Проблема не во время прорисовки строк, а во время добавления строк в список, либо очистка при наличии такого количества.... Добавление такого количества происходит где-то в течении 30 секунд... Что очени нехорошо... Например, в Total Commander"e такой список отображается за несколько сек.... Установка больших значений в AllocBy никаких результатов тоже не дает...


 
jack128 ©   (2003-06-28 23:25) [4]


> LuckyMan © (28.06.03 22:17)

да не запихивает WinCmd все эти строки в ListView. Запихивай сначало 1000 строк, юзер прокрутит скролбар, ты ещё добавь 1000 строк, и тд

как я понимаю совет [NIKEL]"я это примерно тоже что и я советую...


 
LuckyMan ©   (2003-06-28 23:29) [5]

Намек понял... Попробуем-с.... :)))


 
Тих   (2003-06-28 23:44) [6]

В WindowsCommander`e, если не ошибаюсь, вообще не ListView, а наследник ListBox, он памяти поменьше жрёт...


 
LuckyMan ©   (2003-06-28 23:49) [7]

Да... Вот со скроллбаром трабла... Он же будет размером для 1000 строк, а не для 12000... Как это дело можно обойти????


 
LuckyMan ©   (2003-06-28 23:50) [8]

> Тих (28.06.03 23:44)

Это так для примера привел....


 
jack128 ©   (2003-06-28 23:59) [9]


> LuckyMan © (28.06.03 23:49)

приминительно к listview незнаю как это должно выглядить, но в grid"e я делал так:
Задавал кол-во рядов в grid таким, чтобы непоявлялся scrollbar. Рядом ставил TscrollBar , устанавливал у него мах 12000 (в твоем случае) и обрабатывал его события OnChange (перерисововал Grid)...


 
LuckyMan ©   (2003-06-29 00:01) [10]

> jack128 © (28.06.03 23:59)

Спасибки... Попробую... Может что и получиться...


 
murzikN   (2003-06-29 04:17) [11]

Попробуй использовать VirtualTreeView. Он и деревья и списки, в том числе в виде ListView отображает ОЧЕНЬ быстро.


 
[NIKEL] ©   (2003-06-29 13:12) [12]

все свои строки (и вообще данные) которые ты хочешь отобразить - ты должен хранить отдельно, а не в самом ListView, например в какой-то структуре типа

struct TSome
{
String so;
int i;
};

и все эти структурки хранить например в TList`е - уж в него добавить 1000 или 100000 элементов непроблема по скорости
а ListView использовать только для отображения этих элементов при событии OnData

в него передается Item типа TListItem
узнаешь index этого итема, или пишешь так
Item->Caption = TSome(List->Items[Item->Index])->so;

не ленись, почитай хелп - там прекрасно описан виртуальный механизм TListView


 
DVM ©   (2003-06-29 14:12) [13]


> LuckyMan ©

Уже правильно посоветовали, но внимания Вы не обратили: ListView в виртуальном режиме надо использовать. Производительность очень высокая: 1 000 000 итемов за 2 сек.



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

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

Наверх




Память: 0.49 MB
Время: 0.013 c
14-31460
wizzo
2003-06-23 23:13
2003.07.10
ICQ: восстановить очищенный журнал?


3-31083
OlegM
2003-06-16 13:11
2003.07.10
Вопрос по MySQL


3-31142
PrettyFly
2003-06-17 21:03
2003.07.10
SuperDBImage


3-31148
Evgen_Z
2003-06-16 08:21
2003.07.10
Interbase Character Set


14-31434
HermitAlex
2003-06-20 21:11
2003.07.10
Как реализовать автоматическое обновление клиентов?