Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2014, 17:46   #1
iron-mik
 
Регистрация: 17.05.2014
Сообщений: 9
Вопрос Иерархия графических компонентов. Как реализовать такое дерево? C++

Иерархия графических компонентов. Имеется набор компонентов: окно, надпись, список, кнопка, панель, линия. Компоненты окно и панель могут содержать другие компоненты. Компоненты могут быть видимы или скрыты, компоненты можно перемещать в пределах контейнера. Отобразить иерархию компонентов и навигацию по ней в виде дерева.

Вопрос:
Узлы дерева всегда имеют одинаковый тип. Какое это тогда дерево должно быть? Ведь объекты компонентов будут разных классов.

Я прошу дать подсказку по реализации такого дерева. Заранее спасибо!
iron-mik вне форума Ответить с цитированием
Старый 17.05.2014, 17:50   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
Узлы дерева всегда имеют одинаковый тип.
ну и что с того?
eval вне форума Ответить с цитированием
Старый 17.05.2014, 18:00   #3
iron-mik
 
Регистрация: 17.05.2014
Сообщений: 9
По умолчанию

Цитата:
ну и что с того?
всмысле ну и что?
Когда раньше я писал дерево - в структуре узла я описывал ссылку/и на узел, и значения. И потом просто создавал узел и через ссылку прикреплял его к родительскому.
Но теперь когда узлы будут разных типов: Не буду же я в структуре описывать ссылки на всевозможные объекты. О потом выборочно решать какой дочерний узел создавать.
Например узел кнопка никак не может иметь дочерний узел окно!

Мне кажется это не эффективно.

Последний раз редактировалось iron-mik; 17.05.2014 в 18:03.
iron-mik вне форума Ответить с цитированием
Старый 17.05.2014, 18:03   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

зачем на все, одной достаточно
eval вне форума Ответить с цитированием
Старый 17.05.2014, 18:07   #5
iron-mik
 
Регистрация: 17.05.2014
Сообщений: 9
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
зачем на все, одной достаточно
И какого типа тогда должна быть ссылка?
Есть классы: wondow, panel, button и т.д.
КАк их объединить чтобы через одну ссылку можно было иметь доступ к любому типу?
iron-mik вне форума Ответить с цитированием
Старый 17.05.2014, 18:08   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

первый общий базовый видимо

а вообще, не понял, вы что хотите прям в дерево их запихать? а ничего что окно выглядеть несколько криво будет?

вы какую задачу решаете то?

Последний раз редактировалось Stilet; 17.05.2014 в 19:22.
eval вне форума Ответить с цитированием
Старый 17.05.2014, 18:15   #7
iron-mik
 
Регистрация: 17.05.2014
Сообщений: 9
По умолчанию

Понял. Видно где-то упустил что с ссылкой на базовый класс можно ссылаться на производный. Спасибо за помощь!

Цитата:
Сообщение от eval Посмотреть сообщение
а вообще, не понял, вы что хотите прям в дерево их запихать? а ничего что окно выглядеть несколько криво будет?

вы какую задачу решаете то?
Ту которую описал в первом посте. А как по-другому?
Это будет приложение консольное. Без форм если вы это имели виду.

Последний раз редактировалось Stilet; 17.05.2014 в 19:39.
iron-mik вне форума Ответить с цитированием
Старый 17.05.2014, 18:22   #8
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

а ну тогда понятно, а то да, чуть не решил что прям в дерево и суете

ну и если подумать то тип узла может быть 1, а у себя содержать ссылку уже на то что держит и свойство какого типа, чтоб проще было определять
eval вне форума Ответить с цитированием
Старый 17.05.2014, 18:31   #9
iron-mik
 
Регистрация: 17.05.2014
Сообщений: 9
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
... а у себя содержать ссылку уже на то что держит и свойство какого типа, чтоб проще было определять
Простите последнюю часть немного не понял
iron-mik вне форума Ответить с цитированием
Старый 17.05.2014, 18:34   #10
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

да просто делает дерево как и делали раньше, только в узел кидаете 2 свойства
1 для указания контрол какого типа он держит 2 - ссылка на сам контрол

1 можно и не делать но с ним как по мне то проще
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как такое реализовать Руслан(2) Общие вопросы C/C++ 2 02.06.2012 23:14
как реализовать такое же меню как и здесь KWNlnc Общие вопросы Delphi 7 08.06.2010 22:46
Как реализовать такое задание? klepan Общие вопросы C/C++ 0 26.01.2010 16:50
Как реализовать такое (FindText)?? Bobby Общие вопросы Delphi 1 25.09.2009 21:54
Как такое реализовать? AnalogXP Общие вопросы Delphi 9 17.02.2008 00:22