|
|
Регистрация | << Правила форума >> | 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; В чем может быть проблема? |