Главная страница
    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.01 c
3-31072
bSava
2003-06-11 15:39
2003.07.10
Как после Refresh попасть на ту запись которая была активна.


3-31135
Mike1 Kouzmine1
2003-06-18 12:30
2003.07.10
Не знаю как обозвать, но, видимо, о сортировке.


7-31540
mm0
2003-04-27 13:56
2003.07.10
Проблема с левой кнопкой мыши.


4-31563
Петр
2003-05-11 11:19
2003.07.10
Сообщения на обработку нажатия клавиш


4-31560
K_O_T
2003-05-06 22:35
2003.07.10
COM интерфейс IStorage. Help!





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