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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вопрос по VitrualTreeView, CopyTo 
:(
    Опции темы
Нейс
Дата 9.7.2009, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



При копировании методом VST.CopyTo(BaseNode, NewNode, amAddChildLast, false);
новый узел появляется а имя его не отображается, т.е. не копируется структура данных исходного узла (TVirtualNode.Data)
Узлы создаю по первому примеру из статьи Quadr0.
Отрисовка имени узла тоже оттуда.
хелп)
PM MAIL   Вверх
kami
Дата 9.7.2009, 23:44 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Нейс @  9.7.2009,  15:26 Найти цитируемый пост)
а имя его не отображается, т.е. не копируется структура данных исходного узла

само собой.
А откуда VT знает, ЧТО именно нужно копировать? Ведь просто скопировать указатель на данные (т.е. pNodeData) - это не значит скопировать сами данные.
Глянул в исходники - при копировании должны срабатывать (afaik) события OnSaveNode/OnLoadNode. И само собой - события OnNodeCopying/OnNodeCopied.
Для копирования данных использовать любую пару из этих событий.

PM MAIL WWW   Вверх
Нейс
Дата 10.7.2009, 07:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(kami @ 9.7.2009,  23:44)
Ведь просто скопировать указатель на данные (т.е. pNodeData) - это не значит скопировать сами данные.

Спасибо за ответ. Но в CopyTo никакого копирования указателей на данные нет (и было бы неправильным если бы указатели разных узлов ссылались на одни и теже данные), там копируется внутренняя структура узла через поток. Мне казалось что подразумевается копирование
и структуры данных узла. Видимо ручками надо прописать.
Хотя в примере из статьи Quadr0 про реализацию работы механизма Drag&Drop (VirtualTreeView пункт 3.5) для переноса или копирования узлов используются CopyTo и MoveTo без дополнительных обработок событий.
PM MAIL   Вверх
kami
Дата 10.7.2009, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Нейс @  10.7.2009,  07:26 Найти цитируемый пост)
Мне казалось что подразумевается копированиеи структуры данных узла.

Цитата(kami @  9.7.2009,  23:44 Найти цитируемый пост)
А откуда VT знает, ЧТО именно нужно копировать?

VT ничего не знает, и не должен знать о структуре данных узла.
К примеру - в одном VT в качестве данных идут объекты, в другом - record`s. Универсального механизма копирования нет, да и не нужно это. О непосредственном копировании данных должен позаботиться программист. И в этом случае "универсальными" будут методы OnSave|OnLoadNode, т.к. они же будут отвечать за Copy|Move, Drag&Drop и vt.SaveTo|LoadTo.

Цитата(Нейс @  10.7.2009,  07:26 Найти цитируемый пост)
в примере из статьи Quadr0 про реализацию работы механизма Drag&Drop (VirtualTreeView пункт 3.5) для переноса или копирования узлов используются CopyTo и MoveTo без дополнительных обработок событий

Там используется OnGetText и OnNewText, которые вызываются при копировании благодаря опции TreeOptions.StringOptions.toSaveCaptions. Вызов идет "внутри" метода CopyTo (в WriteNode и TargetTree.InternalAddFromStream).
PM MAIL WWW   Вверх
Нейс
Дата 10.7.2009, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



то что нужно, спасибоsmile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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