Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-31500
_0$a_
2003-06-24 02:05
2003.07.10
Как зарядить карточку ?


1-31200
anod
2003-06-25 22:41
2003.07.10
Определение отступов страницы


14-31436
Sergeyy
2003-06-23 12:22
2003.07.10
Внешние библиотеки для сервера Oracle на Kylix


1-31232
seal
2003-06-28 17:57
2003.07.10
RichEdit


7-31530
maxon
2003-04-22 13:50
2003.07.10
путь к системным папкам





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский