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