![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| MegaVolt |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 20.10.2006 Репутация: нет Всего: нет |
Есть пару вопросов:
1. NodeDataSize обязательно фиксированного размера? Или можно делать записи разного размера? У меня для экономии памяти строчки задаются рзаного размера. 2. Можно ли выделить пунктирным прямоугольником фокуса сразу всю строку а не только одну ячейку. Т.е. у меня сейчас выделена вся строка а прямоугольник фокуса выделяет не строку а ячейку 3. Можно ли следать как в Vitrual ListVIew чтобы на добавление ячеек не требовалось место? Если мне иерархия дерева не нужна то можно ли на этом сэкономить? 4. Можно ли рисовать GridLines дальше чем у меня есть колонки? 5. Можно ли при перетаскивании ползунка прокрутки получить такой эффек как и в ListView (прокрутка только на целое число строк) 6. К сожалению у меня очень плохо с юридическим английским. Могу ли я исспользовать VT в коммерческой программе и что для этого нужно?
|
|||
|
||||
| aktuba |
|
||||||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 16 Всего: 38 |
Насколько я знаю, в OnGetNodeDataSize можно возвращать размер записи для каждого узла, но сам не использовал такого.
Не понял вопроса...
Тоже интересует -------------------- ![]() |
||||||
|
|||||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 23 Всего: 51 |
1. Вроде можно разные. Смотри событие OnGetNodeDatasize
2. Именно для фокуса - нет(насколько я знаю). Выделение - это одно, фокус - это другое. (и то и то можно спрятать: TreeOptions->PaintOptions HideFocusRect и HideSelection) 3. Не понял вопроса. Можно не рисовать структуру дерева. В TreeOptions->PaintOptions убрать галочки с ShowRoot и ShowTreeLines 4, 5. не знаю 6. Да. Можно использовать без ограничений. |
|||
|
||||
| MegaVolt |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 20.10.2006 Репутация: нет Всего: нет |
Попробую пояснить. В VT физически данные не хранятся в нём хранится только структура дерева и ссылка на данные. Если я его хочу исспользовать только для отображения списка строк без какой либо иерархии то хранить информацию о иерархии нет необходимости. В ListView это сделано так: я загружаю просто количество строк и в событии OnData подставляю данные. Т.е. сам компонент занимается только отрисовкой и никакой лишней информации кроме положения ползунка прокрутки не хранит. Можно ли в VT получить такой же эффект? Или если нельзя какой минимальный объём памяти будет занимать одна ячейка дополнительно к моим данным? |
|||
|
||||
| aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 16 Всего: 38 |
Нисколько. В RootNodeCount ставишь необходимое количество строк, а в обработчике OnGetText проставляешь значения. Это как вариант... -------------------- ![]() |
|||
|
||||
| MegaVolt |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 20.10.2006 Репутация: нет Всего: нет |
||||
|
||||
| aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 16 Всего: 38 |
Т.е.??? Код в студию... -------------------- ![]() |
|||
|
||||
| MegaVolt |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 20.10.2006 Репутация: нет Всего: нет |
Какой код?
Ставлю: RootNodeCount=1000000 в инспекторе и компилирую в результате запуск занимает пару секунд и при этом отнимается порядка 57 мег памяти. Своего кода 0. Т.е. только настройка свойств компонента. Получается на каждую строчку тратится 57 байт что не есть здорово. |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 23 Всего: 51 |
Virtual TreeView - очень гибкий компонент, но не настолько же =) В конце-концов, это именно дерево, а не Listview. Всё что могу посоветовать: попробуй посмотри в исходниках. А вообще VirtualTreeView к памяти относится довольно экономно. Не вижу особого смысла в такой оптимизации. |
|||
|
||||
| aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 16 Всего: 38 |
VT все-же дерево и для хранения структуры память необходима. НО, если сравнивать с ListView - VT выигрывает по всем пунктам. Сейчас проверил и получилось следующее: VirtualTreeView - 2-3 секунды/57Мб на 1 000 000 записей ListView - 50-60 секунд/93Мб на 1 000 000 записей Время дано с учетом времени создания записей!!! Вот и сравнивай -------------------- ![]() |
|||
|
||||
| MegaVolt |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 20.10.2006 Репутация: нет Всего: нет |
Да жалко памяти на большом количестве строк. Если сам текст строки примерно равен этому объёму то получается двойное увеличение исспользования памяти. |
|||
|
||||
| aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 16 Всего: 38 |
Незаметно говоришь? -------------------- ![]() |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 23 Всего: 51 |
||||
|
||||
| MegaVolt |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 20.10.2006 Репутация: нет Всего: нет |
А то. Режим vsReport
|
||||
|
|||||
| aktuba |
|
||||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 16 Всего: 38 |
У меня вообще не отобразило ни одной строки, правда я и не разбирался. Не использую ListView... Но форма действительно появилась быстро. И памяти занимает 3Мб. Но, тебе лучше использовать ListView, т.к., если я правильно понял, ты хранишь строки. А VT позволяет хранить любые данные. Это + хранение структуры и занимает память. Есть еще такой момент. Все данные у тебя хранятся в самом ListView, а в VT хранятся отдельно. VT используется для отображения данных, а, у тебя, ListView и для отображения и для хранения... P.S.: не корректно сравнивать список с деревом, у них разные предназначения. -------------------- ![]() |
||||
|
|||||
![]()
|
| Правила форума "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. |