иерархическая структура объектов, Delphi 7 |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
иерархическая структура объектов, Delphi 7 |
18192123 |
4.12.2008 16:29
Сообщение
#1
|
Профи Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: 2 |
Здравствуйте!
Есть тема "Иерархия структуры таблицы Менделеева", в пределах которой нужно построить иерархию объектов, состоящей как минимум из 3-х уровней. Для демонстрации работы построенной иерархии классов, создаётся приложение, позволяющее: создавать, удалять объекты, изменять характеристики объектов, визуализировать объекты, манипулировать на форме объектами, сохранять/считывать текущее состояние объектов в формате XML. Есть некоторые задумки насчёт иерархии (изображение)...Может кто-нибудь подскажет другой подход? Ну а прежде всего - трудности с визуализацией и манипулированием объектами...Может быть у кого-нибудь есть идеи, как для начала идейно подойти к этим вопросам? что можно придумать? Подскажите пожалуйста..! Эскизы прикрепленных изображений |
volvo |
4.12.2008 17:30
Сообщение
#2
|
Гость |
Цитата прежде всего - трудности с визуализацией и манипулированием объектами Какие именно трудности возникли? Какими компонентами ты пользуешься для визуализации? То, что ты привела - это же TTreeView в чистом виде. Пробовала его?Вот так выглядит: В Дельфи7 точно уже был этот компонент. Для манипулирования узлами дерева - Drag and Drop, в Drkb есть примеры реализации |
18192123 |
5.12.2008 13:56
Сообщение
#3
|
Профи Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: 2 |
Пока описала свой класс TBPeriod:
На форме имеется кнопка, по которой предполагается создать объект класса TBPeriod (при установке переключателя в положение "Большой"), название его считывается из Edit, и я хочу добавить создаваемый объект в TreeViewNew, с чем и возникла проблема..
Эскизы прикрепленных изображений |
volvo |
5.12.2008 16:02
Сообщение
#4
|
Гость |
Цитата //Вот здесь меня не пропускает с несоответствием типов... Правильно... AddObject принимает три параметра. Первый - Sibling, куда вставлять новый узел, ты про него забыла... Чтобы добавить еще один корневой узел - сделай:FormMain.TreeViewNew.Items.AddObject(nil, title, NewBPeriod as TObject);, ну или передавай вместо nil тот элемент, после которого будет вставлен новый. Проще всего выбрать нужный тебе узел, и сделать: FormMain.TreeViewNew.Items.AddObject(FormMain.TreeViewNew.Selected, title, NewBPeriod as TObject);, тогда новый узел добавится как сосед выбранного. |
18192123 |
5.12.2008 19:15
Сообщение
#5
|
Профи Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: 2 |
Вопрос насчёт создания класса-потомка для моего класса TBPeriod..
Если предполагается, что у этого класса-потомка будет поле, конструктор, так же как и у родителя, то нужно ли эти поле и конструктор писать снова для класса-потомка или можно использовать то, что есть у родителя? Объясните пожалуйста, как это будет выглядеть при описании классов? |
volvo |
5.12.2008 19:38
Сообщение
#6
|
Гость |
Цитата Если предполагается, что у этого класса-потомка будет поле, конструктор, так же как и у родителя, то нужно ли эти поле и конструктор писать снова для класса-потомка или можно использовать то, что есть у родителя? Для инициализации тех полей, которые есть у предка, используй конструктор предка (дя этого тот конструктор, собственно, и существует - чтобы правильно выделить и заполнить поля объекта, которые ему известны). Свой конструктор используется для инициализации новых полей:type |
18192123 |
5.12.2008 21:09
Сообщение
#7
|
Профи Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: 2 |
FormMain.TreeViewNew.Items.AddObject(FormMain.TreeViewNew.Selected, title, NewBPeriod as TObject);, тогда новый узел добавится как сосед выбранного. Скажите пожалуйста, а как модифицировать такую запись, если необходимо, чтобы новый узел был не соседним, а дочерним? Сообщение отредактировано: 18192123 - 5.12.2008 21:09 |
volvo |
5.12.2008 21:38
Сообщение
#8
|
Гость |
Цитата чтобы новый узел был не соседним, а дочерним надо вместо AddObject использовать AddChildObject |
18192123 |
5.12.2008 22:12
Сообщение
#9
|
Профи Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: 2 |
|
18192123 |
6.12.2008 17:30
Сообщение
#10
|
Профи Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: 2 |
Ещё один вопрос по классам...
Есть класс TPeriod и его наследник TRange..
Тогда при записи во 2-м конструкторе компилятор сигнализирует об ошибке..Природа этой ошибки мне ясна (не все параметры указаны)...Но как обойти эту ошибку? Ведь у меня в потомке только поле title без Feature... Сообщение отредактировано: 18192123 - 6.12.2008 17:31 |
volvo |
6.12.2008 18:59
Сообщение
#11
|
Гость |
Цитата Но как обойти эту ошибку? Ведь у меня в потомке только поле title без Feature... Неправда... У тебя в потомке И title, И feature, поскольку оба этих поля описаны в предке... Понимаешь в чем дело? Если тебе хочется сделать так, чтобы потомок содержал меньше полей, чем предок - то налицо ошибка проектирования. У каждого потомка количество полей должно быть как минимум не меньше, чем у предка. |
18192123 |
6.12.2008 19:47
Сообщение
#12
|
Профи Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: 2 |
Неправда... У тебя в потомке И title, И feature, поскольку оба этих поля описаны в предке... Понимаешь в чем дело? Если тебе хочется сделать так, чтобы потомок содержал меньше полей, чем предок - то налицо ошибка проектирования. У каждого потомка количество полей должно быть как минимум не меньше, чем у предка. Большое спасибо за разъяснение! |
18192123 |
6.12.2008 21:06
Сообщение
#13
|
Профи Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: 2 |
Например, я добавила в TreeView объект с некоторыми характеристиками (в TreeView отображается из них заголовок)..Выделила его..Скажите пожалуйста, что нужно сделать, чтобы теперь просмотреть этот объект?
|
volvo |
6.12.2008 21:42
Сообщение
#14
|
Гость |
Совсем забыл уточнить, что для работы с TTreeView твои классы должны быть унаследованы от TObject... То есть, вот так:
type |
Гость |
8.12.2008 2:10
Сообщение
#15
|
Гость |
У меня возник вопрос по Drag&Drop..
Я хочу реализовать такое действие: при перетаскивании элемента из TreeView на Image соответствующий узел (и связанный с ним объект) удаляется.. Попыталась таким образом:
Желаемые результаты не достигаются.. Объясните пожалуйста, как нужно сделать? |
18192123 |
8.12.2008 2:12
Сообщение
#16
|
Профи Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: 2 |
У меня возник вопрос по Drag&Drop.. Я хочу реализовать такое действие: при перетаскивании элемента из TreeView на Image соответствующий узел (и связанный с ним объект) удаляется.. Попыталась таким образом:
Желаемые результаты не достигаются.. Объясните пожалуйста, как нужно сделать? Этот пост - мое авторство..Случайно получилось под "Гость" Сообщение отредактировано: 18192123 - 8.12.2008 2:13 |
volvo |
8.12.2008 2:30
Сообщение
#17
|
Гость |
Цитата Желаемые результаты не достигаются.. Для того, чтобы это работало, и для TreeView и для Image свойство DragMode должно быть установлено в dmAutomatic |
Гость |
8.12.2008 18:34
Сообщение
#18
|
Гость |
Пусть я определила функцию, процедуру и свойство для класса TBPeriod:
В TreeView соответсвенно находится запись и связанный с ней объект..Выделяя эту запись, можем просмотреть значение поля sData. И предположим, пользователь захочет изменить это значение..А как это осуществить с помощью функции, процедуры и свойства моего класса? Не очень понятен механизм..объясните пожалуйста! |
18192123 |
8.12.2008 18:38
Сообщение
#19
|
Профи Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: 2 |
Ой..повторилась история с постом от "Гость"..
|
volvo |
8.12.2008 19:25
Сообщение
#20
|
Гость |
Цитата предположим, пользователь захочет изменить это значение Кто ж мешает?TBPeriod(TreeViewNew.Selected.Data).Data := EditNewValue.Text; // изменяешь свойство Data нужного объекта |
Текстовая версия | 16.09.2024 23:08 |