Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать прогресбар на treeview, Раскрытии TreeView долго отрабатывает 
V
    Опции темы
oleg2s
Дата 13.11.2012, 05:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 12.5.2012

Репутация: 1
Всего: 1



Добрый день.
Имеется TreeView, который содержит очень развесистое дерево.
Поэтому метод FullExpand очень долго отрабатывает.
Как сделать, что бы он отрабатывал быстрее, или как вывести прогресбар во время выполнения метода?
PM MAIL   Вверх
kami
Дата 13.11.2012, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 22
Всего: 72



oleg2s, я бы предложил радикальный метод - использовать VirtualTreeView smile
В конечном итоге, это окажется гораздо эффективнее и будет быстрее работать. Я уже и забыл, как выглядит обычный TreeView или StringGrid  smile 
Учился работать с ним, кстати, по статье Quadro  на форуме (самой статьи почему-то уже нет, но есть pdf-ка, выложенная MetalFan, за что ему спасибо.])

Это сообщение отредактировал(а) kami - 13.11.2012, 07:59
PM MAIL WWW   Вверх
oleg2s
Дата 13.11.2012, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 12.5.2012

Репутация: 1
Всего: 1



VirtualTreeView - это какой то компонент, который надо дополнительно установить?
PM MAIL   Вверх
superVad
Дата 13.11.2012, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 7
Всего: 15



kami, все же VirtualTreeView - это не панацея.
У меня реально была ситуация когда обычное дерево быстрее строилось.
А если очень много узлов, то вероятно и VirtualTreeView будет тормозить.

Другой вопрос к oleg2s - нужен ли там FullExpand, кто все эти узлы смотреть будет?

Цитата(oleg2s @  13.11.2012,  08:17 Найти цитируемый пост)
VirtualTreeView - это какой то компонент, который надо дополнительно установить?

Да.
PM MAIL   Вверх
MetalFan
Дата 13.11.2012, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



Цитата(superVad @  13.11.2012,  12:15 Найти цитируемый пост)
VirtualTreeView будет тормозить

VT будет тормозить только в том случае, если "тормозит" алгоритм загрузки данных.
Но если опять же тормозит именно загрузка данных, то какой контрол не используй - от тормозов не избавишься.
А вот то, что добавление в VT, допустим, 1млн узлов произойдет в разы быстрее, чем в обычный TTreeView - факт.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
oleg2s
Дата 14.11.2012, 05:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 12.5.2012

Репутация: 1
Всего: 1



Цитата(superVad @  13.11.2012,  12:15 Найти цитируемый пост)
Другой вопрос к oleg2s - нужен ли там FullExpand, кто все эти узлы смотреть будет?


Конечно никто не будет смотреть все дерево. Обычно в моей программае используются короткие "деревья". Для удобства сделал кнопку "раскрыть все". Но иногда попадается длинная информация и пользователи жмут на кнопку по привычке. Задержка примерно секунд 15. Конечно можно подождать, но лучше, если будет прогрес.

Из всего написанного выше, я понял, что прогрес сделать нельзя?

Это сообщение отредактировал(а) oleg2s - 14.11.2012, 05:12
PM MAIL   Вверх
MetalFan
Дата 14.11.2012, 06:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



я делал "отменяемый" fullexpand в ручную. Т.е. пробегался по всем нодам, у которых есть дети и они не открыты и делал им expand в цикле. и у пользователя была кнопка "отмена", по которой цикл прерывался... 


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
oleg2s
Дата 14.11.2012, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 12.5.2012

Репутация: 1
Всего: 1



А как узнать количество всех нодов?
Если бы знать заранее количество всех узлов, то можно организовать прогресс, открывая их в цикле.
PM MAIL   Вверх
MetalFan
Дата 14.11.2012, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



oleg2s, зачем всех? открывай по уровням.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
oleg2s
Дата 14.11.2012, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 12.5.2012

Репутация: 1
Всего: 1



Если я буду знать общее количество узлов, тов цикле при открытии каждого узла можно организовать прогресбар smile
PM MAIL   Вверх
oleg2s
Дата 15.11.2012, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 12.5.2012

Репутация: 1
Всего: 1



Прогресбар сделал. Все красиво.
Пока делал, выяснилось, что делал зря.
Большое дерево раскрывается практически мгновенно, если перед этим выключить видимость.
Переделывать не стал.
PM MAIL   Вверх
MetalFan
Дата 15.11.2012, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



Цитата(oleg2s @  15.11.2012,  09:50 Найти цитируемый пост)
перед этим выключить видимость

может будет достаточно beginupdate/endupdate?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0908 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.