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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с TreeView и БД, Как загрузить структуру TreeView из БД 
:(
    Опции темы
SnAKEen
Дата 6.8.2007, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем здрям!
Проблемма такая: 

Есть БД где храниться структура TreeView:

ВнутрКод    МойКодЭл    <-КодПренадлежностиКЭлем        Наименование
1                  1                    0                                                     ГЛАВНАЯ
2                  2                    1                                                     ГРУППА 1
3                  3                    11                                                   ГРУППА 2
4                  4                    1                                                     ГРУППА 3
5                  5                    2                                                     ГРУППА 1-1
6                  6                    3                                                     321
7                  7                    6                                                     23
8                  8                    4                                                     23
9                  9                    3                                                     12
10                10                  5                                                     123
11                11                  1                                                     32132131321
12                12                  11                                                   321321321321


Далле приведу код построения TreeView:

Код

procedure TForm1.RefreshGroup(TV: TTreeView);
var
  MyTV: Array[1..200] of TTreeNode;
  I: ShortInt;
  Q: TQuery;
Begin
  Q := TQuery.Create(Application);
  Q.DatabaseName := '';
  Q.SQL.Clear;
  Q.SQL.Add('SELECT * FROM group_list.db');
  Q.Open;

  TV.Items.Clear;
  Q.First;
  For I := 1 to Q.RecordCount Do
  Begin
    with TV.Items do
    begin
      If Q.Fields.FieldByName('FOR_ID').AsInteger = 0 Then
        MyTV[Q.Fields.FieldByName('ID').AsInteger] := Add(nil, Q.Fields.FieldByName('NAME').AsString)
      Else
        MyTV[Q.Fields.FieldByName('ID').AsInteger] := AddChild(MyTV[Q.Fields.FieldByName('FOR_ID').AsInteger], Q.Fields.FieldByName('NAME').AsString); 
    End;
    Q.Next;
  End;
End;



Проблемма в том что когда мы перебераем БД по порядку... мы натыкаемся на 3й элемент и понимаем что он пренадлежит элементу с номером 11 а элемент с этим номером еще не создан. В результате получаем ошибку.
СТРОКА: MyTV[Q.Fields.FieldByName('ID').AsInteger] := AddChild(MyTV[Q.Fields.FieldByName('FOR_ID').AsInteger], Q.Fields.FieldByName('NAME').AsString); 


Помогите пожалуйста советом!! или может кто знает другой способ работы с  и БД???


Да и еще один вопросик.. Нетли у когонибудь ссылочки по литературе об TreeView Буду благодарен...


Это сообщение отредактировал(а) SnAKEen - 6.8.2007, 22:32
PM MAIL   Вверх
STFN
Дата 7.8.2007, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



http://forum.vingrad.ru/topic-97620/view-all.html - тут про Virtual TreeView. Может поможет тебе.
PM MAIL ICQ Jabber   Вверх
SnAKEen
Дата 7.8.2007, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо... много интересного!!! smile 
PM MAIL   Вверх
pseud
Дата 8.8.2007, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

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



Developer Express DBTreeList тебе в руки (платный правда, но если поискать...)
оч. удобная вещь
IMHO удобноее, чем Virtual TreeView, но платно


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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