![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Нейс |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 9.7.2009 Репутация: нет Всего: нет |
При копировании методом VST.CopyTo(BaseNode, NewNode, amAddChildLast, false);
новый узел появляется а имя его не отображается, т.е. не копируется структура данных исходного узла (TVirtualNode.Data) Узлы создаю по первому примеру из статьи Quadr0. Отрисовка имени узла тоже оттуда. хелп) |
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
само собой. А откуда VT знает, ЧТО именно нужно копировать? Ведь просто скопировать указатель на данные (т.е. pNodeData) - это не значит скопировать сами данные. Глянул в исходники - при копировании должны срабатывать (afaik) события OnSaveNode/OnLoadNode. И само собой - события OnNodeCopying/OnNodeCopied. Для копирования данных использовать любую пару из этих событий. |
|||
|
||||
Нейс |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 9.7.2009 Репутация: нет Всего: нет |
Спасибо за ответ. Но в CopyTo никакого копирования указателей на данные нет (и было бы неправильным если бы указатели разных узлов ссылались на одни и теже данные), там копируется внутренняя структура узла через поток. Мне казалось что подразумевается копирование и структуры данных узла. Видимо ручками надо прописать. Хотя в примере из статьи Quadr0 про реализацию работы механизма Drag&Drop (VirtualTreeView пункт 3.5) для переноса или копирования узлов используются CopyTo и MoveTo без дополнительных обработок событий. |
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
VT ничего не знает, и не должен знать о структуре данных узла. К примеру - в одном VT в качестве данных идут объекты, в другом - record`s. Универсального механизма копирования нет, да и не нужно это. О непосредственном копировании данных должен позаботиться программист. И в этом случае "универсальными" будут методы OnSave|OnLoadNode, т.к. они же будут отвечать за Copy|Move, Drag&Drop и vt.SaveTo|LoadTo. Там используется OnGetText и OnNewText, которые вызываются при копировании благодаря опции TreeOptions.StringOptions.toSaveCaptions. Вызов идет "внутри" метода CopyTo (в WriteNode и TargetTree.InternalAddFromStream). |
|||
|
||||
Нейс |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 9.7.2009 Репутация: нет Всего: нет |
то что нужно, спасибо
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |