Поиск:

Ответ в темуСоздание новой темы Создание опроса
> создание ссылки внутри дерева на другую ветвь 
:(
    Опции темы
Incinerated
Дата 26.3.2009, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 18.5.2006
Где: Беларусь, Новопол оцк

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



Суть вопроса в следующем... есть дерево:
Код

TTreeNode* node = new TTreeNode(TreeView1->Items);
TreeView1->Items->Add(node,"1");
delete node;
node = new TTreeNode(TreeView1->Items);
TreeView1->Items->Add(node,"2");
delete node;
TreeView1->Items->AddChild(TreeView1->Items->Item[0],"3");
TreeView1->Items->AddChild(TreeView1->Items->Item[2],"4");
TreeView1->Items->AddChild(TreeView1->Items->Item[0]->Item[0],"5");
TreeView1->Items->Item[3]->Item[0] = TreeView1->Items->Item[0]->Item[0];

если посмотреть по коду, то видно что в ветке "2" происходит замена первого ребенка на первого ребенка из "1" ветки.... как бы названия все нормально переназначаются, а вот дальнейшее продолжение дерева - нет. Т.е. я не могу во "2" ветке дойти до "5", которая есть в "1", а очень хотелось бы.... не знаю как еще можно объяснить....вообщем нужно чтобы можно было проделать 2 пути:
1:
Код

1-3-5

2:
Код

2-3-5

где "3" - одит и тот же узел дерева....
Спасибо.
PM MAIL   Вверх
Klin
Дата 26.3.2009, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Не правильно поняли технологию использования.

Код

TreeView1->Items->Add(NULL, "1");
TreeView1->Items->AddChild(TreeView1->Items->Item[0], "1.1");
TreeView1->Items->AddChild(TreeView1->Items->Item[0], "1.2");
TreeView1->Items->AddChild(TreeView1->Items->Item[0], "1.3");
TreeView1->Items->Add(TreeView1->Items->Item[0], "2");
TreeView1->Items->AddChild(TreeView1->Items->Item[4], "2.1");
TreeView1->Items->AddChild(TreeView1->Items->Item[4], "2.2");



--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Klin
Дата 26.3.2009, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Забыл сказать. Имхо, ссылки в TreeView не предусмотрены, но копирование отдельных ветвей разрешено.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Incinerated
Дата 26.3.2009, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 18.5.2006
Где: Беларусь, Новопол оцк

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



Цитата(Klin @ 26.3.2009,  17:15)
Не правильно поняли технологию использования.

Код

TreeView1->Items->Add(NULL, "1");
TreeView1->Items->AddChild(TreeView1->Items->Item[0], "1.1");
TreeView1->Items->AddChild(TreeView1->Items->Item[0], "1.2");
TreeView1->Items->AddChild(TreeView1->Items->Item[0], "1.3");
TreeView1->Items->Add(TreeView1->Items->Item[0], "2");
TreeView1->Items->AddChild(TreeView1->Items->Item[4], "2.1");
TreeView1->Items->AddChild(TreeView1->Items->Item[4], "2.2");

хм...мы по-мойму друг друга не поняли, в вашем примере не то что мне нужно, это я и сам мог сделать.... в моем же примере мне нужно сделать так, чтобы к узлу с номером "5" можно было зайти через узел "2"... для этого нужно скопировать внутренние узлы узла "1", я пытался переназначить, он как бы переназначает.... но дальнейший просмотр невозможен - "+" просто не нажимается...
P.S. если взять ваш пример, то нужно добавить скажем ребенка к 1.3 и получится скажем 1.3.1, так вот нужно чтобы при раскрытии 2.2 появился 1.3.1

Это сообщение отредактировал(а) Incinerated - 26.3.2009, 20:22
PM MAIL   Вверх
Klin
Дата 26.3.2009, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



К примеру так:

Код

TreeView1->Items->Add(NULL, "1");
TreeView1->Items->AddChild(TreeView1->Items->Item[0], "1.1");
TreeView1->Items->AddChild(TreeView1->Items->Item[0], "1.2");
TreeView1->Items->AddChild(TreeView1->Items->Item[0], "1.3");
TreeView1->Items->AddChild(TreeView1->Items->Item[3], "1.3.1");
TreeView1->Items->AddChild(TreeView1->Items->Item[3], "1.3.2");
TreeView1->Items->AddChild(TreeView1->Items->Item[3], "1.3.3");
TreeView1->Items->Add(TreeView1->Items->Item[0], "2");
TreeView1->Items->AddChild(TreeView1->Items->Item[7], "2.1");
TreeView1->Items->AddChild(TreeView1->Items->Item[7], "2.2");

for (short i = 4; i<=6; i++)
  TreeView1->Items->AddChild(TreeView1->Items->Item[U][9][/U],TreeView1->Items->Item[i]->Text);


В подчеркнутой номер - соотвествует номеру Item в который мы копируем Item'ы, указанные в цикле.

Добавлено через 3 минуты и 40 секунд
А в вашем случае появляется "+", но не нажимается, потому, что вы копируете только один элемент, с его данными. А в данных сказано, что есть дети, но детей нет.

Это как, если при переоформлении паспорта вам по ошибке напишут, что у вас дети есть. Но после этого они у вас не появятся, верно?

Добавлено через 5 минут и 29 секунд
Блин, подчеркивание не прошло  smile короче в последней строке, цифра 9 - это номер в который идет копирование.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Anikmar
Дата 26.3.2009, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Что-то дерево какое-то получается не деревянное. Т.е. из разных узлов должны попасть в одну и ту же ветку? Так это уже не дерево вроде. Разве TTreeView такое может вообще?
PM MAIL ICQ   Вверх
Klin
Дата 26.3.2009, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Anikmar @  26.3.2009,  22:27 Найти цитируемый пост)
Разве TTreeView такое может вообще?


Цитата(Klin @  26.3.2009,  19:56 Найти цитируемый пост)
Имхо, ссылки в TreeView не предусмотрены, но копирование отдельных ветвей разрешено.


Такую структуру можно реализовать, но имхо TreeView не может этого сделать. Только если методом огня и меча, т.е. через OnClick обрабатывать и бла бла бла. Но смысла такого эффекта не вижу.

Есть еще функция MoveTo, которая занимается перемещением отдельных ветвей, но, повторюсь я в третий раз, про ссылки в TreeView не слышал.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Incinerated
Дата 26.3.2009, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 18.5.2006
Где: Беларусь, Новопол оцк

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



Цитата(Klin @ 26.3.2009,  20:42)
Такую структуру можно реализовать, но имхо TreeView не может этого сделать. 

именно такая структура мне и нужна, как ее реализовать думаю сам пойму) проблема заключается в графическом интерфейсе для нее....добавление, изменение, удаление, перемещение.....я не знаю как это сделать... поэтому пытаюсь что то с деревом намутить....
PM MAIL   Вверх
Anikmar
Дата 27.3.2009, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Incinerated @  26.3.2009,  23:58 Найти цитируемый пост)
поэтому пытаюсь что то с деревом намутить.... 


ИМХО. Только самому изобретать. Дерево не поможет.

Я даже внешне с трудом это представляю - как это должно выглядеть на экране
PM MAIL ICQ   Вверх
Klin
Дата 27.3.2009, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Incinerated @  27.3.2009,  00:58 Найти цитируемый пост)
..добавление, изменение, удаление, перемещение.....

это как раз реально в TreeView, а вот ссылки, боюсь, что нет.

Цитата(Anikmar @  27.3.2009,  01:01 Найти цитируемый пост)
Я даже внешне с трудом это представляю - как это должно выглядеть на экране

Вопрос фантазии и smile 

Первое, что на ум приходит это два ListBox. Первый, отображает родителей, второй или пустой (в случае с главным списком) или отображает детей выбранного элемента.

Добавлено через 1 минуту и 36 секунд
Или ListView, т.к. вся инфа храниться в струтурах или к примеру в классах, а в ListView отображается список детей текущего родителя. Вариантов масса.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Anikmar
Дата 27.3.2009, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Ну или дерево, если копировать ветки - т.е. делать абсалютно одинаковые. Правда при этом, на экране при раскрытом дереве появятся одинаковые дети.

Не знаю, сильно ли это удобно будет пользователю.
PM MAIL ICQ   Вверх
Klin
Дата 27.3.2009, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Anikmar @  27.3.2009,  01:11 Найти цитируемый пост)
Не знаю, сильно ли это удобно будет пользователю.


Зависит от задачи. Мне в голову приходят разные варианты, но меня больше волнует программная сторона, так как все будет происходить в реальном времени (т.е. в динамике) нужно продумать все варианты, т.к. как всем известно, косяков больше всего происходит именно в динамическом использовании памяти.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Anikmar
Дата 27.3.2009, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Incinerated, А в чем вообще суть задачи? Может кому в голову другое решение придет?
PM MAIL ICQ   Вверх
Incinerated
Дата 27.3.2009, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 18.5.2006
Где: Беларусь, Новопол оцк

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



Цитата(Anikmar @ 26.3.2009,  23:25)
Incinerated, А в чем вообще суть задачи? Может кому в голову другое решение придет?

пишу экспертную систему...основанную на графах....нужно придумать удобный способ графического интерфейса....
PM MAIL   Вверх
Anikmar
Дата 27.3.2009, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Klin предложил два списка, но мне кажется визуализация будет нагладнее сверху вниз.

Отрисовывать можно в сетке. СТрока с родителями, под каждым родителем - список детей. Но опять таки список детей может дублироваться - если у разных родителей один и тот-же ребенок.

Либо по схеме просмотра каталогов. Щелкнул два раза - вошел "к детям". Кнопка на уровень вверх - вернулся (только вот вопрос куда? - если к детям можно попасть из разных мест)...

Мда - как спускаться от родителей к детям не вопрос, а вот как визуализировать подъем от детей к родителям (если их много)... Можно три списка Слева все родители, справа все дети, по центру - соседи вместе с текущим узлом.
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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