| 
| 
 | Вопрос # 3 801/ вопрос открыт / | 
 |  Здравствуйте!Я невичёк, хотел попросить у вас совета)
 Пишу программу в которой должно быть два TreeView. Первое древо что то вроде каталога, при выборе его элементов структура и содержание 2го древа должны обновляться. А элементы 2го древа можно добавлять, удалять, переименовывать. Подскажите, как лучше это реализовать?  Как осуществлять сохранение и загрузку структур 2го древа. (Если можно, то с примерами)
 
|  |   Вопрос задал: Azg (статус: Посетитель)Вопрос отправлен: 23 февраля 2010, 14:09
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, Azg!Наверно удивитесь, но TreeView умеет сохранять себя и загружать с текстового файла. методы SaveToFile и LoadFromFile.
 Здесь http://www.delphisources.ru/pages/faq/base/fast_treeview.html есть доработанный компонент TreeView, который должен выполнять эти процедуры значительно быстрее.
 
 Но если хочется сохранять более полную информацию (о иконках к примеру), то лучше воспользоваться xml. Вот здесь http://delphi.about.com/library/weekly/aa101904a.htm есть пример загрузки и сохранения.
 
 Здесь http://pblog.ru/lab/?tag=treeview есть подборка материалов на тему TreeView, думаю, там можно найти хорошие заготовки кода.
 
 Также в будущем думаю будет неплохо посмотреть на Virtual TreeView. Вот http://forum.vingrad.ru/forum/topic-97620.html хорошая статья по нем.
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 23 февраля 2010, 14:21
 Оценка за ответ: 5
 Комментарий к оценке: Большое спасибо, буду изучать) |  
 Мини-форум вопросаВсего сообщений: 7; последнее сообщение — 24 февраля 2010, 16:24; участников в обсуждении: 2. 
|   | min@y™ (статус: Доктор наук), 23 февраля 2010, 14:18 [#1]:Если ты новичёк, разобраться с этим тебе будет сложновато, по себе знаю. Предупреждаю: придётся написать одного или нескольких потомков от TTreeNode, чтобы хранить древовидную информацию, привязанную к ним. Ты морально готов к этому?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Azg (статус: Посетитель), 23 февраля 2010, 15:21 [#2]:min@y™: 
 В общем то я делал нечто подобное, по методу из темы https://expert.delphi-int.ru/question/934/
 
 Мне нужно было привязать к каждому из элементов 2го древа по несколько чисел... При двойном клике по элементу вылетает окно настроек и сохранённые числа обозначают индексы выбранных названий)
 
 
 begin
   Form4.ShowModal;
   If Form4.ModalResult = 1 then
    begin
    TreeView2.Items.AddChild(TreeView2.Items.Item[I],T);
    TMyNode(TreeView2.Items.Item[I]).FOpt.FI:= Form4.ComboBox1.ItemIndex;
    TMyNode(TreeView2.Items.Item[I]).FOpt.SI:= Form4.ComboBox2.ItemIndex;Всё работало (хотя я не очень то понял принцип работы TMyNode
  ), но это было на 1м древе... а сейчас нужно увеличить кол-во деревьев...  что делать когда деревьев много?.. Была идея сделать массив, примерно так:
 
 begin
   Form4.ShowModal;
   If Form4.ModalResult = 1 then
    begin
    TreeView2.Items.AddChild(TreeView2.Items.Item[I],T);
    TMyNode(TreeView2.Items.Item[I]).FOpt.Nam[j].FI:= Form4.ComboBox1.ItemIndex;
    TMyNode(TreeView2.Items.Item[I]).FOpt.Nam[j].SI:= Form4.ComboBox2.ItemIndex;Где j индекс выбранного элемента 1го древа. Но что то не получилось. К тому же индексы 1го древа так же могу меняться, так что тут я в тупике(( |  
|   | min@y™ (статус: Доктор наук), 23 февраля 2010, 15:38 [#3]:Выкинь всё, что есть и начни сначала. Пиши свой класс для хранения древовидной информации. Про массивы забудь: это вещи линейные, они тут не нужны. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Azg (статус: Посетитель), 23 февраля 2010, 15:46 [#4]:Дело в том что я новичёк, мои познания базовые(( Понятия не имею как писать свой класс... Поэтому то и спрашиваю тут совета... Всё что мне сейчас нужно это загружать деревья (попытаюсь с xml) и к каждому элементу привязать кое какие данные (пару чисел и строчек)... |  23 февраля 2010, 16:05: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Работа с компонентами и библиотеками модератором Ерёмин А.А. Причина: TreeView - это компонент  
|   | min@y™ (статус: Доктор наук), 24 февраля 2010, 10:52 [#5]: Цитата (Azg): попытаюсь с xml Это хорошая идея. Сам использую TECXMLParser, рекомендую: очень простой в использовании и с исходниками. Похоже, это то, что надо.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Azg (статус: Посетитель), 24 февраля 2010, 11:50 [#6]:min@y™: 
 Спасибо за совет, попробую.)
 |  
|   | min@y™ (статус: Доктор наук), 24 февраля 2010, 16:24 [#7]: Цитата (Azg): Спасибо за совет, попробую. О результатах не забудь доложить.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |