|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
|  | Опции темы | Поиск в этой теме | Опции просмотра | 
| 
			 
			#1  
			
			
			
			
		 | |||
| 
 | |||
|  Работа с 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;В чем может быть проблема? |