Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Баг в VirtualTreeView


Автор: RA 3.11.2006, 01:06
Вобщем я думаю это баг, хотя может я и ошибаюсь, но всёже.


После так называемой дубликации через 
PasteFromClipboard или CopyTo возникает проблема с перебором нодов, тоесть некоторые ноды по средствам Getnext не обнаруживаются, до перезагрузки контента VT.

Если кто сталкивался с багом, поделитесь рецептом выживания, или если вас напараноило моё заявление могу демо пример скинуть где всё это чётко видно.


PS: Вот бы кто автору сообщил про баг ...........  smile 

Автор: Nicholas_S 3.11.2006, 01:11
RA, не встречал ни разу. Можешь кинуть кусок кода и версию дерева?

Автор: Dynamic 3.11.2006, 06:38
Цитата(RA @  3.11.2006,  01:06 Найти цитируемый пост)
После так называемой дубликации через 
PasteFromClipboard или CopyTo возникает проблема с перебором нодов, тоесть некоторые ноды по средствам Getnext не обнаруживаются, до перезагрузки контента VT.


Т.е., отображается нормально, но по getnext находит не все? что-то верится с трудом...

Автор: RA 3.11.2006, 14:29
Nicholas_S, 
 Так и знал что никто такого не встречал.
Dynamic, 
Ну это не просто так, там нужно определенное условие.

Щас примерчик соберу сами увидите.

Автор: RA 3.11.2006, 15:30
Вот, примерчик в аттаче.


Значит так, запускаете приложение, открываете нод "Links"
копируете нод "5" и вставляете в нод "2". 
Копирование вставка в PopUpmenu.

Далее нажимаете "Enum" и получаете списочек всех заголовков всех элементов, ну и смотрите чего нехватает.

Автор: Quadr0 3.11.2006, 15:33
...

Автор: Nicholas_S 3.11.2006, 17:06
RA, честно, ни разу не пользовался копированием в клипбоард Здесь проблема не потому, что GetNext отрабатывает неверное - она работает ок, проблема в том, что вставленные ноды не содержат даты, т.е. она не была скопирована. Попробуй реализовать (если для твоей задачи это приемлемо) через стандартные методы копирования-вставки у дерева.

Автор: Quadr0 3.11.2006, 23:00
...

Автор: Nicholas_S 4.11.2006, 00:39
Цитата

Там как раз через стандартные и сделано (CopyToClipboard, PasteFromClipboard).
PasteFromClipboard здесь использовать нельзя...


Я как раз имел ввиду через метод CopyTo, пробегая по всем предкам, что ты успешно и показал на примере.
Вставка из клипборда, имхо, должна работать нормально, просто скорее всего нужно инициализировать каждый вставляемый node отдельно.

Автор: RA 4.11.2006, 02:55
Цитата(Quadr0 @  3.11.2006,  23:00 Найти цитируемый пост)
Дык вот, после вставки VST.TotalCount не меняет возвращаемого значения. Опять же, мне неизвестно баг это или нет. Вроде после вставки увеличивается число узлов и возвращаемое чило должно увеличиваться,  но этого не происходит. Поэтому я не знаю чей код кривой, Mike Lischke или Радмина


Это надо вынести на голосование smile

Обойти проблему не решив её, или не узнав проблема ли она, наверное будет не правильно,
пожалуй обращусь к разработчику, может это действительно баг за которым могут крыться последствия. 

Автор: Quadr0 4.11.2006, 11:11
...

Автор: RA 5.11.2006, 16:21
Ну на своём ломаном английском я описал суть проблемы и отправил, но думаю что автор не ответит.  smile 


PS: оказывается и Node.GetChildCount тоже не обновляется. 

Автор: RA 4.12.2006, 17:57
Вот такой вот ответ пришёл

Цитата

Please try the latest VT version from
http://www.soft-gems.net:8080/browse/library/VirtualTreeview/Source. I
recently fixed something in this regard and cannot reproduce the problem you
described with your demo code. Hint: use OnSaveNode and OnLoadNode to
transfer your data during a node move/copy operation.


Там нашёл такую вот дадпись 
Цитата


// March 2006
//   - Bug fix: total count and total height is wrong after loading from stream


Добавлено @ 18:05 
остаётся непонятным почему с офф сайта можно качать релиз 2005 года

Добавлено @ 18:06 
Вобщем всем качать новую версию

http://www.soft-gems.net:8080/browse/~raw,r=113/library/VirtualTreeview/Source/VirtualTrees.pas

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)