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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2017, 15:07   #1
MissIren
 
Регистрация: 28.12.2016
Сообщений: 6
По умолчанию Работа с TreeView в Delphi

Добрый день!

Пишу программу для работы с базой данных Access.
Структуру данных демонстрирую с помощью TreeView, всего две основные ветки.
При работе с деревом в первой ветке все узлы открываются щелчком левой кнопки мыши по их названию.
А при переходе на вторую ветку узлы раскрываются только щелчком по "+", при щелчке по названию вся программа зависает.

Работа с деревом только в двух процедурах:
При создании формы отрисовывается дерево:
Код:
  DataModule1.T_KONCEPT.Open; 
  DataModule1.T_SPECIES.Open; 
  DataModule1.T_REC.Open; 
  if not DataModule1.T_KONCEPT.IsEmpty then 
  begin
     DataModule1.T_KONCEPT.First; 
     Repeat        MainNode:=TreeView1.Items.AddChild(nil,DataModule1.T_KONCEPT.FieldByName('NAME_KONCEPT').asString); 
       DataModule1.T_SPECIES.First; 
       Repeat 
         if DataModule1.T_KONCEPT.FieldByName('ID_KONCEPT').AsInteger =
            DataModule1.T_SPECIES.FieldByName('KONCEPT').AsInteger then
           begin
             GrNode := TreeView1.Items.AddChild(MainNode,DataModule1.T_SPECIES.FieldByName('NAME_SPEC').asString);
             DataModule1.T_REC.First; 
             Repeat 
               if DataModule1.T_REC.FieldByName('SPECIES').asInteger=
                  DataModule1.T_SPECIES.FieldByName('ID_SPEC').asInteger then 
               ConNode:=TreeView1.Items.AddChild(GrNode,DataModule1.T_REC.FieldByName('NAME_RECORDS').asString);  
                DataModule1.T_REC.Next; 
             until DataModule1.T_REC.Eof; 
           end;
         DataModule1.T_SPECIES.Next; 
       until DataModule1.T_SPECIES.Eof; 
       DataModule1.T_KONCEPT.Next; 
     until DataModule1.T_KONCEPT.Eof; 
  end;
  MainNode.Expand(False);
и при выборе какой-либо записи происходит отображение данных из Базы:

Код:
If Node<>nil then 
 if Node.AbsoluteIndex<>0 then 
   if Node.Parent.AbsoluteIndex<>0 then 
    begin
     DataModule1.T_REC.First; 
     if DataModule1.T_REC.FieldByName('NAME_RECORDS').AsString<>Node.Text then
     repeat
      DataModule1.T_REC.Next;
     until DataModule1.T_REC.FieldByName('NAME_RECORDS').AsString=Node.Text;

     DataModule1.T_KONCEPT.First;
     repeat
        if DataModule1.T_REC.FieldByName('KONCEPT_RECORDS').asInteger=DataModule1.T_KONCEPT.FieldByName('ID_KONCEPT').asInteger then Panel2.Caption:=DataModule1.T_KONCEPT.FieldByName('NAME_KONCEPT').AsString;
        DataModule1.T_KONCEPT.Next;
     until DataModule1.T_KONCEPT.Eof;

     DataModule1.T_SPECIES.First;
     repeat
        if DataModule1.T_REC.FieldByName('SPECIES').asInteger=DataModule1.T_SPECIES.FieldByName('ID_SPEC').asInteger then 
        Panel3.Caption:=DataModule1.T_SPECIES.FieldByName('NAME_SPEC').AsString;
        DataModule1.T_SPECIES.Next;
     until DataModule1.T_SPECIES.Eof;
end;
В чем может быть проблема?
MissIren вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с TreeView DENIS_1992 Общие вопросы Delphi 7 09.06.2011 00:37
Работа с TreeView Sensizu Общие вопросы Delphi 0 15.06.2010 14:58
работа с treeview street-walker Общие вопросы Delphi 4 10.05.2010 19:13
Работа с TreeView orkus Общие вопросы Delphi 4 06.04.2010 13:56
Работа с TreeView Demien Общие вопросы Delphi 3 02.07.2009 16:57