С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/35: Рейтинг темы: голосов - 35, средняя оценка - 4.60
5 / 5 / 2
Регистрация: 28.02.2010
Сообщений: 127

Добавление элементов в TreeView на основе существующих

04.03.2012, 04:21. Показов 7010. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет!
Никогда не работал с TreeView, но сейчас пришлось. Нужно создать несколько десятков одинаковый ветвей, потом заполнять их. Естественно, через редактор их создавать оч долго. Я сделал одну ветку, и хочу на основе ее создать все остальные. Как это сделать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.03.2012, 04:21
Ответы с готовыми решениями:

Добавление существующих элементов препятствует успешной компиляции
подключаю "мастер страниц" и др страницы при помощи: - добавить существующие элементы и при построение вылазит ошибки: ...

Создать таблицу на основе существующих
Допустим, есть 2 объекта DataTable: players (с полями p_id и name) и game (с полями p_id и score). Как сделать новую таблицу, содержащую...

Добавление и удаление элементов TreeView
Могли бы помочь с заданием?: Создать приложение, содержащее элемент управления TreeView. Реализовать возможность добавления...

14
 Аватар для Sergey-K
238 / 229 / 58
Регистрация: 27.10.2011
Сообщений: 249
04.03.2012, 05:03
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  TreeView1->Items->Add(NULL, "Главная");
  TTreeNode *Parent = TreeView1->Items->Item[0];
  Parent = TreeView1->Items->AddChildFirst(Parent, "Первая");
  Parent = TreeView1->Items->AddChildFirst(Parent, "Вторая");
  Parent = TreeView1->Items->AddChildFirst(Parent, "Третья");
  TreeView1->Items->AddChild(Parent, "Файл");
}
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
04.03.2012, 10:32
C++
1
2
3
4
5
TTreeNode *Add(TTreenode *N, AnsiString S);
TTreeNode *AddFirst(TTreenode *N, AnsiString S);
TTreeNode *AddChild(TTreenode *N, AnsiString S);
TTreeNode *AddChildFirst(TTreenode *N, AnsiString S);
TTreeNode *Insert(TTreenode *N, AnsiString S);
1
5 / 5 / 2
Регистрация: 28.02.2010
Сообщений: 127
04.03.2012, 13:54  [ТС]
Большое спасибо за ответы! Теперь я знаю, как динамически создавать ветки.
Но все же, вопрос был немного другой: как на основе одной ветки, сделанной в редакторе, создать еще несколько подобных, тоесть, сделать клоны?
0
5 / 5 / 2
Регистрация: 28.02.2010
Сообщений: 127
05.03.2012, 18:50  [ТС]
другой вопрос:
Как обратиться к какому то конкретному дереву компонента?
Если пишу TreeView->Items->Item[0]->Text = "ееее";, то изменяется название первого дерева, если TreeView->Items->Item[0]->Text = "ееее";, то первого элемента первого дерева. Но как обратиться ко второму дереву и остальным?
0
 Аватар для Sergey-K
238 / 229 / 58
Регистрация: 27.10.2011
Сообщений: 249
05.03.2012, 19:03
C++
1
2
3
4
5
6
7
8
9
TreeView->Items->Item[0]->Text = "ееее";
TreeView->Items->Item[1]->Text = "aaaa";
TreeView->Items->Item[2]->Text = "oooo";
 
TreeView1->Selected->Text = "ssss";
 
TTreeNode *tmp_node;
tmp_node = Tree->Items->AddChild(Parent, "gggg");
tmp_node->Text = "dddd";
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
05.03.2012, 19:19
Обход дерева (как я понял, тебе нужно именно это) осуществляется вот такой рекурсивной функцией
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
TTreeNode * __fastcall TForm1::RecNod(char *s, TTreeNode *nod)
{ int j, n; char *q; TTreeNode *nd;
   n = atoi(s);
   if (nod==NULL) nd = TreeView1->Items->Item[0];
   else nd = nod->getFirstChild();
   for(j=0; j<n && nd!=NULL;j++) {
       nd = nd->getNextSibling();
   }
   if (nd==NULL) return(nd);
   q = strplus(s, '-');
   if (q==NULL) return(nd);
   else return RecNod(q, nd);
}
Пояснять ничего не буду, я использовал это все в своих целях, со своей организацией дерева.
Главное - использование методов getFirstChild() и getNextSibling()
И, конечно, рекурсия. Куда ж без нее в лесу?
1
5 / 5 / 2
Регистрация: 28.02.2010
Сообщений: 127
05.03.2012, 22:42  [ТС]
Офигенное спасибо!!! Терь разобрался
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
05.03.2012, 23:23
Цитата Сообщение от Br.Misha Посмотреть сообщение
Офигенное спасибо!!! Терь разобрался
Доброе слово и кошке приятно
0
5 / 5 / 2
Регистрация: 28.02.2010
Сообщений: 127
22.03.2012, 19:24  [ТС]
Есть еще вопрос.
Нужно сохранить несколько элементов TreeView в один файл. Как это лучше сделать?
Можно ли как то перевести все содержимое элемента в текстовую строку чтобы потом сохранить в ini файл?
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
22.03.2012, 19:42
Цитата Сообщение от Br.Misha Посмотреть сообщение
Есть еще вопрос.
Нужно сохранить несколько элементов TreeView в один файл. Как это лучше сделать?
Можно ли как то перевести все содержимое элемента в текстовую строку чтобы потом сохранить в ini файл?
Тебе нужно сохранить просто текст элемента? Или структуру дерева, с тем, чтобы ее можно было потом восстановить?
Текст элемента
C++
1
TreeView1->Items[i].c_str()
Структура дерева обычно сохраняется в формате XTML (он как бы специально для этого предназначен), даже есть кажется какие-то методы. Я сделал это по-своему, доморощенным образом, и рекомендовать свой способ не могу.
0
5 / 5 / 2
Регистрация: 28.02.2010
Сообщений: 127
25.03.2012, 06:04  [ТС]
У меня есть несколько TreeView с разной структурой, мне надо данные с нескоьких TreeView сохранить в один файл, чтобы потом можно было восстановить данные с этого же файла
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
25.03.2012, 07:13
Для внеклассного чтения:
TTreeView - Показываем XML-файл любой сложности
TTreeView - Сохранение в XML-файл
Исходник XML2TreeView
TTreeView - Exporting to XML & populating from XML
Каждое дерево можно сохранить в отдельный узел и при желании загрузить из этого же узла XML.
1
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661
25.06.2014, 07:12
А вот интересно. Можно ли и как в TreeView добавлять узлы не в направлении корень->подчиненные а в обратном порядке - от листьев к вершине? Другими словами из списка где есть указатель только на предыдуший элемент, а на следующие-нет
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
27.06.2014, 21:35
И в чем суть такого добавления? Зачем?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.06.2014, 21:35
Помогаю со студенческими работами здесь

Создание объектов на основе уже существующих
Добрый день! Есть список объектов List&lt;classA&gt; lst = new List&lt;classA&gt;(); В котором хранятся список его наследников с со своими...

Запрет добавления в TreeView уже существующих там строк
Строка из поля edit помещается в treeview по нажатии на кнопку. как сделать так, чтобы, если такая строка уже существует, ее снова не...

Формирование нового списка на основе существующих данных
Ребят... подскажите пожалуйста..где ошибка в коде... Задача На рабочем листе с помощью программного кода процедуры ProdSales...

Добавление данных с поиском существующих
Добро времени суток всем. Нужна помощь с кнопочкой на юзер форме. Суть в том что есть перечень инвентаря в экселе, хотел написать для неё...

Добавление блоков div, с сохранением существующих
Добрый день, форумчане! Возникла проблема есть следующий css: .Field { text-align: center; } .block { width: 100px; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru