![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| oleg2s |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 12.5.2012 Репутация: 1 Всего: 1 |
Добрый день.
Имеется TreeView, который содержит очень развесистое дерево. Поэтому метод FullExpand очень долго отрабатывает. Как сделать, что бы он отрабатывал быстрее, или как вывести прогресбар во время выполнения метода? |
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
oleg2s, я бы предложил радикальный метод - использовать VirtualTreeView
В конечном итоге, это окажется гораздо эффективнее и будет быстрее работать. Я уже и забыл, как выглядит обычный TreeView или StringGrid Учился работать с ним, кстати, по статье Quadro на форуме (самой статьи почему-то уже нет, но есть pdf-ка, выложенная MetalFan, за что ему спасибо.]) Это сообщение отредактировал(а) kami - 13.11.2012, 07:59 |
|||
|
||||
| oleg2s |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 12.5.2012 Репутация: 1 Всего: 1 |
VirtualTreeView - это какой то компонент, который надо дополнительно установить?
|
|||
|
||||
| superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 7 Всего: 15 |
kami, все же VirtualTreeView - это не панацея.
У меня реально была ситуация когда обычное дерево быстрее строилось. А если очень много узлов, то вероятно и VirtualTreeView будет тормозить. Другой вопрос к oleg2s - нужен ли там FullExpand, кто все эти узлы смотреть будет?
Да. |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
VT будет тормозить только в том случае, если "тормозит" алгоритм загрузки данных. Но если опять же тормозит именно загрузка данных, то какой контрол не используй - от тормозов не избавишься. А вот то, что добавление в VT, допустим, 1млн узлов произойдет в разы быстрее, чем в обычный TTreeView - факт. -------------------- There are always someone smarter than you... |
|||
|
||||
| oleg2s |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 12.5.2012 Репутация: 1 Всего: 1 |
Конечно никто не будет смотреть все дерево. Обычно в моей программае используются короткие "деревья". Для удобства сделал кнопку "раскрыть все". Но иногда попадается длинная информация и пользователи жмут на кнопку по привычке. Задержка примерно секунд 15. Конечно можно подождать, но лучше, если будет прогрес. Из всего написанного выше, я понял, что прогрес сделать нельзя? Это сообщение отредактировал(а) oleg2s - 14.11.2012, 05:12 |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
я делал "отменяемый" fullexpand в ручную. Т.е. пробегался по всем нодам, у которых есть дети и они не открыты и делал им expand в цикле. и у пользователя была кнопка "отмена", по которой цикл прерывался...
-------------------- There are always someone smarter than you... |
|||
|
||||
| oleg2s |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 12.5.2012 Репутация: 1 Всего: 1 |
А как узнать количество всех нодов?
Если бы знать заранее количество всех узлов, то можно организовать прогресс, открывая их в цикле. |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
oleg2s, зачем всех? открывай по уровням.
-------------------- There are always someone smarter than you... |
|||
|
||||
| oleg2s |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 12.5.2012 Репутация: 1 Всего: 1 |
Если я буду знать общее количество узлов, тов цикле при открытии каждого узла можно организовать прогресбар
|
|||
|
||||
| oleg2s |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 12.5.2012 Репутация: 1 Всего: 1 |
Прогресбар сделал. Все красиво.
Пока делал, выяснилось, что делал зря. Большое дерево раскрывается практически мгновенно, если перед этим выключить видимость. Переделывать не стал. |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
может будет достаточно beginupdate/endupdate? -------------------- There are always someone smarter than you... |
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |