|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.01.2010, 00:43 | #11 |
***
Участник клуба
Регистрация: 30.07.2007
Сообщений: 1,162
|
Компонента незнаю. Но организацию данных могу подсказать. В базе два поля создаёте. Одно допустим уникальный ключ, другое ФИО. И так суть такая:
Начало первое поколение 1, 2: 1) 14ds3 ключ + человек 1. сумма 14ds3-1 2) 14ds3 ключ + человек 2. сумма 14ds3-2 Второе поколение: 1) общий код родителей 14ds3, уникальный ключ самого человека 23fd4-4, сумма такая 14ds3-23fd4-4 2) код родителей 14ds3, уникальный ключ самого человека 23fd4-5, сумма такая 14ds3-23fd4-5. Это одна семья. Разделитель у вас есть (это тире, можно любой), анализируя такой ключ вы можете находить общее между семьями, т.е. общее на каком то уровне. Так что вы по этому ключу можете спокойно проследить до начала. И так можно продолжать. А по поводу вашего рисования, рисуете по поколениям. А перед этим анализируете кол-во человек в поколении и уже от этого распологаете. p.s.: ключ канешно может быть меньше это я так для примера. Главное это исключить повторения. |
11.01.2010, 14:07 | #12 | |
Форумчанин
Регистрация: 27.05.2009
Сообщений: 127
|
Цитата:
Это мне чем-то напомнило генетический код. Идея интересная. При помощи этих ключей можно будет управлять не только определенными личностями, но и целыми ветвями. Попробую на этом как-то что-то сделать, объединив со своими идеями и силами. Не согласен только в том, что стоит создать два поля в базе (ФИО и ключ). Я бы несколько изменил эти понятия: Первое поле: личные данные. 1) ФИО 2) Даты 3) Путь к доп. инф 4) и т.д. Второе поле: данные для связи в этом дереве. 1) Ваш ключ 2) Или как у меня идентификационный номер 3) Родители 4) Дети 5) Супруги Как я понимаю, последние несколько пунктов можно частично или полностью заменить этим ключом. Но это только организация данных. Необходимый фундамент. Мне кажется, что с этим всё понятно. Хотя главная проблема так и осталась. |
|
11.01.2010, 14:42 | #13 |
***
Участник клуба
Регистрация: 30.07.2007
Сообщений: 1,162
|
Ну это было как пример, а сколько создавать это зависит только от ваших пожеланий
Ну главная проблема с расположением я так понял? Ну а например так: 1) анализируете сколько человек в поколении 2) на основе про аналированного создаёте 1 (семья) 1-1 (вторая семья) 1-2 (третья семья) и уже в зависимости от кол-ва расставлять на растояние какое то. Плюс когда они у вас не будут помещаться добавлять скрол бар. Но это канешно я подразумевал что вы сами будете рисовать. Можно ко всему этому анализировать последующее поколение и на основе этого задавать расстояние. |
11.01.2010, 15:23 | #14 |
Форумчанин
Регистрация: 27.05.2009
Сообщений: 127
|
Я так и подумал
Я уже набросал за последние дни что-то вроде хода этого алгоритма. Только пока на бумаге. Пока особо не спешу. Слушаю мнения других Кое-что меняю. Как Вы думаете, с какого поколения лучше начинать сортировку (рисование)? С самого младшего, самого старшего, того в котором больше всего человек, того где находится идентификационный номер "1" или с другого поколения? --------------------- Если немножко отвлечься и пофилософствовать, то вот к чему меня приводят мысли. Так как технологический прогресс сейчас шагает семимильными шагами, то наиболее ценным в наше время я считаю саму информацию, а не способы её визуального представления. Поэтому, на мой взгляд, такой способ хранения генеалогических деревьев лучше, нежели начерченная в какой-то программе и сохраненная в JPEG (к примеру). Захотелось мне например, чтобы все рамочки были листочками. А изменить трудно. Т.е. создание древа из базы дает более широкий спектр гибких возможностей. Если подумать шире, то можно в будущем из подобной базы создать трехмерную родословную. Чтобы всё находилось не в одной плоскости, а в нескольких. Всё уже зависит от воображения и от возможностей техники будущего. И если устареет сама база, то её всегда можно спокойно перегнать в другой современный (для того времени) формат. Главное, что останется сама информация. P.S. "Спасибо" долетело? А то "репы" кажется не прибавилась. |
11.01.2010, 22:59 | #15 |
***
Участник клуба
Регистрация: 30.07.2007
Сообщений: 1,162
|
Тут на мой взгляд роли особой не играет. Это уже должны выбрать вы сами, мне лично нравится когда начало идёт сверху, а не снизу.
|
11.01.2010, 23:32 | #16 |
Пользователь
Регистрация: 11.01.2010
Сообщений: 21
|
позвольте ка переверну вашу лодочу
1 - вы ввели слово "поколение" и оно вас потопит. Едва ли у вашего пра-рпа-рпа-рпа-прадеда все пра-пра-пра-правнуки жили в среднем одинаково. Едва ли у вас нету пятиюродного человека старше вас по поколению но младше по возрасту. И нормы морали и законности едва ли помешают ему жениться на вашей сестре. Вычеркните из лексикона слово "поколение". Это слово для людей не применимо. 2 - как отреагирует ваша связь "супруги" на попытку вашего дяди развестись с тётей и жениться на другой тёте? .. и родить вам сводную двоюродную сестру... 3 - как ни крути чем дальше в предки , тем шырше ветки. Вывести их всех не получится. Делай так : "Фикснутым" считай какую-либо перса из этого дерева. При этом выводи его ближайших родственников на три-четыре ветки вниз и вверх.. чтоб на экран влазило. И потом следи за курсором мыши: Еси он находится над персом - этот перс становится фикснутым Еси курсор находится на "стрелочке", символизирующей родственную связь, то определи между кем и кем она находится. Плавно продвинь их на экране вместе с курсором к центру экрана. Короче говоря вывести на экран - забудь. Лучше сообрази как сделать красивую навигацию. ДиректИкс тебе поможет. |
11.01.2010, 23:44 | #17 |
***
Участник клуба
Регистрация: 30.07.2007
Сообщений: 1,162
|
и так:
1 2 3 //мы их не группируем по каким то временым рамкам. 4 5 6 7 8 //правда ведь не важно? 9 10 11 12 13 14 15 //и тут оно вроде особой роли не играет? 16 17 18 19 20 Ваша навигация очень интересна. Но главное дерево в любом случае в такой программе должно быть. |
11.01.2010, 23:58 | #18 |
Пользователь
Регистрация: 11.01.2010
Сообщений: 21
|
Нее. Ваш вопрос - вот что по истине интересно. В самом деле. Очень сложная задача.
РПерсонаж = ^ТПерсонаж ТПерсонаж = рекорд Имя : Стринг; ВремяЖизни : ТТаймПериод; сожители : эррэй оф РПерсонаж; даты_сожительства: эррей оф ТТаймПериод; (соответствует сожительствам) родной_отец : РПерсонаж; родная_мать : РПерсонаж; энд; Как ни странно - боюсь это единственное решение. Введёте сюда детей - и всё рухнет. Детей каждый раз придётся искать перебором по признаку родителя. Хотя не, есть еще один не менее единственный вариант: РПерсонаж = ^ТПерсонаж; ТРодственнаяСвязь = рекорд СКем : РПерсонаж; Период :ТТаймПериод; ТипРодства : ТТипРодства (перечисляемый тип: родитель, дитё, сожитель) Блаад : Буулеан: енд; Для родства муж-жена - это период сожительства Для ТипРодства родитель-ребёнок Период начинается в момент принятия опекунства (решением суда там или по праву кровного отцовства/материнства), и заканчивается прекращением опекунства (решением суда для несовершеннолетних) либо смертью ребёнка (но не смертью родителя, поскольку после неё ребёнок родителя остаётся ребёнком родителя... и так далее) Таким образом понятно, что у ребёнка могут быть несколько отцов и матерей, хронологически разнесённых по его жизни. Приёмных. Но тут уточнение - отцом будет считаться родитель мужского пола. Матерью - родитель женского. В наше время увы это не всегда так... Кровность же родительской связи указывается булеановоым Бладом. И кроме того ни о каких братьях - сватьях - деверях (чо эт ваще такое) речи быть не может. Все подобные связи обнаруживаются дальнейшим анализом. В дерево не вносятся. .. ну и массивчик вот такого типа: ТПерсонаж = рекорд Нейм : Стринг; ЛайфТайм : ТТаймпериод; СвязиРодства : эррэй оф ТРодственнаяСвязь; енд; Вот. И плюс красивая такая нифиговая навигация. Точка )) Последний раз редактировалось _bAd_; 12.01.2010 в 07:19. |
12.01.2010, 14:47 | #19 |
Форумчанин
Регистрация: 27.05.2009
Сообщений: 127
|
Спасибо. Искупался, мозги охладил.
Как-то я действительно не подумал, что к примеру дочь кого-то может выйти замуж за пятиюродного брата кого-то (кого-то и кого-то - это один и тот же человек). Хотя я создавал большое древо, у меня такого (к счастью) не было. Как я теперь понимаю, придется располагать не по поколениям, а по возрасту. Хотя это всё значительно усложняет (а может и упрощает. это я ещё не понял) создание этой проги. Насчет периода сожительства - на мой взгляд перебор. Хотя идея правильная. Только придется не на каждого персонажа применять. Так как слишком мало данных. Я иногда не знаю девичью фамилию или отчество пра-пра-пра-прабабушки, не то что период сожительства. Постараюсь учесть все замечания. Не согласен только с этим: Хоть убейте, но не соглашусь. Иначе грош цена всей моей идеологии (Той цели, которую я преследую). И последнее: что Вы подразумеваете под этим? Хотелось бы поподробнее. Спасибо. Свежие мысли мне всегда приятны. |
12.01.2010, 18:31 | #20 |
Пользователь
Регистрация: 11.01.2010
Сообщений: 21
|
Благодарю за мнение
Под красиво навигацией я подразумевал единственный способ вывести дерево на экран. Где-то выше звучал верно поставленный вопрос- с какой точки начинать? Немного развив эту мысль станет ясно, что внешний вид дерева будет кардинально меняться в зависимости от того, на какого персонажа смотрите. А значит по середине экрана какой-то один перс, а остальные (сколько влезет) пляшут от него в верх, вниз и в бок родства. Тёти и дяди встанут в линию если смотреть на их племянника. А если смотреть на тётину бабушу, то между тётей и дядей три поколения оболтусов обнаружатся. Вот о чем я. |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Алгоритм создания дерева Delphi | VadEr | Помощь студентам | 5 | 03.11.2009 08:45 |
Создания интерфейса...си | dampirik | Помощь студентам | 1 | 06.07.2009 14:40 |
C# Создания ярлыка | MAcK | Общие вопросы .NET | 6 | 16.08.2008 12:22 |
создания бота | kobras | Работа с сетью в Delphi | 1 | 01.12.2007 14:41 |
Создания Класса | Mickle | Общие вопросы Delphi | 1 | 30.04.2007 00:44 |