Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > TTreeView частичная прорисовка


Автор: MuForum 9.8.2012, 17:39
Доброго времени суток.
Необходимо решить поставленную задачу под Delphi 7.
Необходимо с XML файла грузить огромный список элементов в компонент TTreeView - порядка 200'000 записей первого порядка и куча вложений...

Даже если использовать прерывания при прорисовки: BeginUpdate/EndUpdate, всё равно это извращение....
Встал разумный вопрос, почему бы не хранить в памяти весь xml Документ(запись всех нодов и т.д.), а вот в самом компоненте не прорисовать лишь видимую часть?

Я себе это представляю так:
1. Считывается высота/ширина видимой части TTreeView.
2. Перехватываются функции прокрутки по горизонтали/вертикале.
3. Вычисляется высота одного нода. Делится на высоту компонента, допустим получилось n элементов.
4. Прорисовываем в видимой части TTreeView только 'n' элементов.
5. При изменении позиции скролов/scroll, рисуем новые ноды.
6. При раскрывании кого-то элемента(нода), рисуем новую схему.


P.S. -> Суть в том, чтобы все ноды хранились в памяти, Но, прорисовывались лишь 'n' элементов которые поместятся по высоте видимой части.

P.S. -> Может у кого-то есть толковые ссылки, документация, статьи, исходники и т.д.
- Заранее благодарю.

Автор: kami 9.8.2012, 18:34
Цитата(MuForum @  9.8.2012,  17:39 Найти цитируемый пост)
 Может у кого-то есть толковые ссылки, документация, статьи, исходники и т.д.

VirtualTreeView - это решение всех озвученных проблем.
На форуме есть статья по нему, в гугле - куча тем и примеров. Главное - правильно выбрать версию.

Автор: northener 10.8.2012, 01:22
Цитата(kami @  9.8.2012,  18:34 Найти цитируемый пост)
VirtualTreeView - это решение всех озвученных проблем.

Хм. Вспоминая личный совет мне от некоего весьма широко известного мастера, VirtualTreeView - это ещё и немалый геморой в использовании. smile

Автор: kami 10.8.2012, 21:29
------------

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)