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

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Проблемы с Virtual TreeView, Статью читал :) 
:(
    Опции темы
Quadr0
Дата 23.1.2007, 21:16 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(MegaVolt @  23.1.2007,  18:49 Найти цитируемый пост)
1. NodeDataSize обязательно фиксированного размера? Или можно делать записи разного размера? У меня для экономии памяти строчки задаются рзаного размера.

Фиксированный. И только.
В каком смысле строчки разного размера? Используется тип ShortString?
Цитата(MegaVolt @  23.1.2007,  18:49 Найти цитируемый пост)
2. Можно ли выделить пунктирным прямоугольником фокуса сразу всю строку а не только одну ячейку. Т.е. у меня сейчас выделена вся строка а прямоугольник фокуса выделяет не строку а ячейку

Нет, нельзя, но с трудом представляю, зачем это может понадобиться. Прямоугольник фокуса он на то и нужен, чтобы во всей строке активную колонку отображать. Не стоит уродовать интерфейс.
Можно сделать это через OwnerDraw, но опять же, зачем?
Цитата(MegaVolt @  23.1.2007,  18:49 Найти цитируемый пост)
3. Можно ли следать как в Vitrual ListVIew чтобы на добавление ячеек не требовалось место? Если мне иерархия  дерева не нужна то можно ли на этом сэкономить?

Не требовалось места где? Сэкономить на чем?
Цитата(MegaVolt @  23.1.2007,  18:49 Найти цитируемый пост)
4. Можно ли рисовать GridLines дальше чем у меня есть колонки?

Да, можно. См. настройки категории PaintOptions.
Цитата(MegaVolt @  23.1.2007,  18:49 Найти цитируемый пост)
6. К сожалению у меня очень плохо с юридическим английским. Могу ли я исспользовать VT в коммерческой программе и что для этого нужно? 

Ограничений нет. Никаких. Абсолютно. VT использует в Delphi даже Borland.

Это сообщение отредактировал(а) Quadr0 - 23.1.2007, 21:17
  Вверх
MegaVolt
Дата 24.1.2007, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(aktuba @  23.1.2007,  21:04 Найти цитируемый пост)
Но, тебе лучше использовать ListView, т.к., если я правильно понял, ты хранишь строки. А VT позволяет хранить любые данные. Это + хранение структуры и занимает память.
VT позволяет хранить любые данные согласен. Но в данном примере он никаких данных не хранит. Он просто подставляет строчки по умолчанию для всех колонок. А сами данные с их структурой в данном примере не задействованы smile

Цитата(aktuba @  23.1.2007,  21:04 Найти цитируемый пост)
Есть еще такой момент. Все данные у тебя хранятся в самом ListView, а в VT хранятся отдельно.
ListView как раз в этом режиме не хранит данные. Я же привёл событие которое запращивает анные для отображаемой ячейки. Сами данные могут хрантися где угодно smile Т.е. в данном случае ListView обходит VT и если бы не проблемы с отрисовками и пр... я бы на VT и не взглянул бы.

Цитата(aktuba @  23.1.2007,  21:04 Найти цитируемый пост)
P.S.: не корректно сравнивать список с деревом, у них разные предназначения.
Вот тут полностью согласен. Просто идея реализована великолепно и я думал что автор путём мелких доработок смог добавить и режим эмуляции ListView.


Цитата(Quadr0 @  23.1.2007,  21:16 Найти цитируемый пост)
В каком смысле строчки разного размера? Используется тип ShortString?
Исспользую записи такого вида:
Код

X=Record
  ....
  Size:integer;
  S:String;
end;

Т.е. SizeOf(x) не соотвествует занимаемому месту в памяти. В памяти структура занимает SizeOf(x)+x.Size. И если VT сам может хранить данные или извлекать их то ему нужно знать истинный размер записи в памяти.

Цитата(Quadr0 @  23.1.2007,  21:16 Найти цитируемый пост)
Нет, нельзя, но с трудом представляю, зачем это может понадобиться.
Для единообразия интерфейса с ListView. Есть такая вещь как привычка.

Цитата(Quadr0 @  23.1.2007,  21:16 Найти цитируемый пост)
Не требовалось места где? Сэкономить на чем?
В теме уже я дал развернутое объяснение и эту тему уже страницу обсуждаем.

Цитата(Quadr0 @  23.1.2007,  21:16 Найти цитируемый пост)
Да, можно. См. настройки категории PaintOptions.
Посмотрел smile Нету там птички позволяющей продолжить горизонтальные линии за границу последней колонки

PM MAIL   Вверх
MegaVolt
Дата 24.1.2007, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Место занимает вот эта структурка:
Код

  TVirtualNode = packed record
    Index,                   // index of node with regard to its parent
    ChildCount: Cardinal;    // number of child nodes
    NodeHeight: Word;        // height in pixels
    States: TVirtualNodeStates; // states describing various properties of the node (expanded, initialized etc.)
    Align: Byte;             // line/button alignment
    CheckState: TCheckState; // indicates the current check state (e.g. checked, pressed etc.)
    CheckType: TCheckType;   // indicates which check type shall be used for this node
    Dummy: Byte;             // dummy value to fill DWORD boundary 
    TotalCount,              // sum of this node, all of its child nodes and their child nodes etc.
    TotalHeight: Cardinal;   // height in pixels this node covers on screen including the height of all of its
                             // children
    // Note: Some copy routines require that all pointers (as well as the data area) in a node are
    //       located at the end of the node! Hence if you want to add new member fields (except pointers to internal
    //       data) then put them before field Parent.
    Parent,                  // reference to the node's parent (for the root this contains the treeview)
    PrevSibling,             // link to the node's previous sibling or nil if it is the first node
    NextSibling,             // link to the node's next sibling or nil if it is the last node
    FirstChild,              // link to the node's first child...
    LastChild: PVirtualNode; // link to the node's last child...
    Data: record end;        // this is a placeholder, each node gets extra data determined by NodeDataSize
  end;


Для режима отображения одинаковых строк её можно преобразовать к виду
Код

  TVirtualNode = packed record
    Index,                   // index of node with regard to its parent
    States: TVirtualNodeStates; // states describing various properties of the node (expanded, initialized etc.)
    PrevSibling,             // link to the node's previous sibling or nil if it is the first node
    NextSibling,             // link to the node's next sibling or nil if it is the last node
    Data: record end;        // this is a placeholder, each node gets extra data determined by NodeDataSize
  end;

Осталось убедить компонент недостающие поля считать константой smile И брать для них значение по умолчанию

Добавлено @ 13:02 
Ещё вопрос а можно ли сделать чек бокс в каждой строчке? Т.е. несколько checkBox для одной строки?

Это сообщение отредактировал(а) MegaVolt - 24.1.2007, 12:51
PM MAIL   Вверх
Bose
Дата 24.1.2007, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

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



MegaVolt, мне кажется, что это похоже на стрельбу из пушки по воробьям smile 

Чтобы удовлетворить твоим требованием, в любом случае придётся переписывать какой-то из компонентов, будь это ListView или Virtual tree View. 

Цитата

Ещё вопрос а можно ли сделать чек бокс в каждой строчке? Т.е. несколько checkBox для одной строки?


В каждой строке можно.  

А несколько CheckBoxов для одной, тоже можно, но уже ручками.

п.с. Хотя в этом случае, мне кажется уже уместнее воспользоваться Gridом smile NextGrid выглядит довольно красиво smile 
PM MAIL WWW Skype   Вверх
Bose
Дата 24.1.2007, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

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



Как вариант, советую взглянуть на готовые ListView. Например Mustang EasyListview. Здесь можно посмотреть скриншоты.
PM MAIL WWW Skype   Вверх
MegaVolt
Дата 24.1.2007, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Bose @  24.1.2007,  13:52 Найти цитируемый пост)
Чтобы удовлетворить твоим требованием, в любом случае придётся переписывать какой-то из компонентов, будь это ListView или Virtual tree View.
Ты совершнено прав. Я практически заточил ListView под то что хочу но столкнулся с проблемами которые решить не могу и на форумах народ тоже молчит smile Вот и решил смотреть в сторону VT. Но тут вылазят другие проблемы smile

Цитата(Bose @  24.1.2007,  13:52 Найти цитируемый пост)
Хотя в этом случае, мне кажется уже уместнее воспользоваться Gridом
Цитата(Bose @  24.1.2007,  14:27 Найти цитируемый пост)
Как вариант, советую взглянуть на готовые ListView
Обязательно посмотрю.

PM MAIL   Вверх
MegaVolt
Дата 24.1.2007, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Посмотрел smile

NextGrid из их примера добавляет 100000 элементов за 6 секунд smile Чем явно проигрывает VT и LV.
EasyListView похоже тоже не позволяет делать CheckBox-ики в каждой колонке.
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.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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