Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перекидывание узлов из одного TTreeView в другое

621
28 августа 2004 года
Бешеный кролик
151 / / 23.03.2004
У меня на разных формах много объектов TTreeView.
Причем, они должны быть почти одинаковы (т.е. в одном 2000 узлов, в другом те же 2000 плюс или минус несколько узлов). Узлы я гружу из базы, что занимает определенное время. Можно ли сделать так: загрузить один базовый TTreeView, а потом перекидывать его Items в другие деревья (не в цикле по AbsoluteIndex что тоже долго, а одним-двумя операторами). Пробовал метод Assign, получил ерунду.
368
28 августа 2004 года
rostyslav
629 / / 13.07.2004
если узлы содержат только текст, то можешь пользоваться ф-ями SaveToStream(), LoadFromStream().
621
28 августа 2004 года
Бешеный кролик
151 / / 23.03.2004
Цитата:
Originally posted by rostyslav
если узлы содержат только текст, то можешь пользоваться ф-ями SaveToStream(), LoadFromStream().



Спасибо, вообще-то мне не хотелось бы совсем ничего грузить. Т.е. в идеале желательно один раз загрузить из базы данных объект типа TTreeNodes, а потом в нескольких TTreeView его отображать и редактировать. Такое возможно? У меня пока не получается.

368
29 августа 2004 года
rostyslav
629 / / 13.07.2004
Цитата:
Originally posted by Бешеный кролик

Т.е. в идеале желательно один раз загрузить из базы данных объект типа TTreeNodes, а потом в нескольких TTreeView его отображать и редактировать. Такое возможно?


если имеешь в виду, чтоб несколько treeview имели одного и того же treenode, то

tv1.Items := tv.Items; //Delphi


но для передачи nodes служит SaveToStream()/LoadFromStream(). и работает очень быстро. где-то 40000 записей LoadFromStream(точнее LoadFromFile) загружает где-то за секунду.

можеш проверить с ф-иями SaveToFile()/LoadFromFile()

сперва нужно загрузить Nodes в первый treeview.
Записать это с SaveToFile("nodes.txt");

а остальные treeview уже заполнять с LoadFromFile.

621
29 августа 2004 года
Бешеный кролик
151 / / 23.03.2004
Цитата:
Originally posted by rostyslav

если имеешь в виду, чтоб несколько treeview имели одного и того же treenode, то

tv1.Items := tv.Items; //Delphi


но для передачи nodes служит SaveToStream()/LoadFromStream(). и работает очень быстро. где-то 40000 записей LoadFromStream(точнее LoadFromFile) загружает где-то за секунду.

можеш проверить с ф-иями SaveToFile()/LoadFromFile()

сперва нужно загрузить Nodes в первый treeview.
Записать это с SaveToFile("nodes.txt");

а остальные treeview уже заполнять с LoadFromFile.



Еще раз спасибо, поэкспериментирую с Save/LoadToStream (правда нужно не только текст передавать, но и объекты, но т.к. объекты - целые числа, думаю, можно выйти из положения, например запихивая и извлекая их из текста).

А TreeView1->Items=TreeVie2->Items я пробовал и у меня ничего не получилось, поэтому и запостил вопрос.

368
29 августа 2004 года
rostyslav
629 / / 13.07.2004
Цитата:
правда нужно не только текст передавать, но и объекты, но т.к. объекты - целые числа, думаю, можно выйти из положения, например запихивая и извлекая их из текста.


тогда тебе нужно написать свой вариант Save*/Load*. я такое написал на Visul C. Нужно использовать стек treenode-ов.

Цитата:

А TreeView1->Items=TreeVie2->Items я пробовал и у меня ничего не получилось, поэтому и запостил вопрос.


я теперь смотрел, на Delphi она работает.

5.7K
30 августа 2004 года
forw
47 / / 24.08.2004
Цитата:
Originally posted by Бешеный кролик


Еще раз спасибо, поэкспериментирую с Save/LoadToStream (правда нужно не только текст передавать, но и объекты, но т.к. объекты - целые числа, думаю, можно выйти из положения, например запихивая и извлекая их из текста).

А TreeView1->Items=TreeVie2->Items я пробовал и у меня ничего не получилось, поэтому и запостил вопрос.



Попробуй еще вот так,

TTreeNodes * nodes = new TTreeNodes(MainTree);
ChildTree->Items->Assign(nodes);

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог