Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как можно связать TTreeView с базой? может кто сталкивался? 
:(
    Опции темы
Chuck
Дата 11.11.2004, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Сушня
**


Профиль
Группа: Эксперт
Сообщений: 442
Регистрация: 12.12.2003
Где: Узбекистан, Ташке нт

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



Добрый день!

Вот решил написать электронный учебник!
Выглядеть он будет так!
Слева TreeView, справа компонент TWebBrowser (это очень скупой описание, на самом деле там будет админовская часть для редактирования разделов и статей) !

Все статьи будут храниться в базе MS Access, но, изучив (возможно, не полностью) TTreeView, я столкнулся с проблемой
редактирования, удаления разделов! Проще скажу - не могу связать TTreeView с базой, точнее таблицей разделов!
Немного о базе, точнее о её структуре!
Я решил не описывать все таблицы, и все поля, опишу лишь те, что представляют важность для данного вопроса!
И так:
Код

TABLE parts
part_id - индекс раздела (уникальный)
part_name - название раздела
parent_id - тут содержится индекс родительского раздела!

TABLE articles
article_id - индекс статьи (уникальный)
article_text - сама статья
article_part - индекс раздела, к которому относится данная статья!


Вот вроде все с базой!

Теперь вопрос! Как мне можно связать TTreeView с базой?
Есть два моих варианта!
1. Созадть запись типа
Код

Notes = record;
name :String;  
id : Integer;
end;


Тут будет при выборе раздела в TreeView производится поиск по записи с таким же именем, и по нему узнаваться id, раздела!

2.Индексировать разделы не по уникальному id, а по имени, но, IMHO, глупо!

Кто что посоветует!???

Vit, если не сложно, посоветуйте что-нибудь, Вы ведь работаете с факом, а там тот же принцип!

PM MAIL WWW GTalk   Вверх
p0s0l
Дата 11.11.2004, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



У каждого нода (элемента) TreeView есть свойство Data - в нём и храни id...
там можешь хранить всю необходимую инфу для идентификации раздела/темы...
Добавляй в TreeView например так:
Код
TreeView1.Items.AddNode(nil, Node1, 'Раздел1', Pointer(TopicId), ...)

Или у уже добавленного нода присваивай:
Код
Node.Data := Pointer(TopicId);

Потом, чтобы узнать Id выбранной темы:
Код
TopicId := Integer(TreeView1.Selected.Data);


PS: (добавлено позднее, после Вита)
похоже, что я неправильно понял суть вопроса smile


Это сообщение отредактировал(а) p0s0l - 12.11.2004, 00:04


--------------------
С уважением, г-н Посол.
PM   Вверх
Vit
Дата 11.11.2004, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



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

Код

Европа
+Украина  
++Киев
++Харьков
+Россия
++Москва
++Питер
Америка
+США
++Вашингтон


Кодируется в таблице:
Код

id parent value
1  0  Европа
2  1  Украина  
3  2  Киев
4  2  Харьков
5  1  Россия
6  5  Москва
7  5  Питер
8  0  Америка
9  8  США
10 9  Вашингтон



--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Chuck
Дата 12.11.2004, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Сушня
**


Профиль
Группа: Эксперт
Сообщений: 442
Регистрация: 12.12.2003
Где: Узбекистан, Ташке нт

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



2p0s0l
Спасибо, именно это мне и нужно было!!!

2Vit, спасибо, я так и предполагал хранить, проблема была в хранение индекса у TreeView, только, может, я не правильно описал, я как раз не знал, можно ли отдельному ноду, или поддереву задавать как-то id?
Спасибо p0s0l-у!!!

PM MAIL WWW GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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