Добрый день!
Пишу программу для работы с базой данных 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;
В чем может быть проблема?