Есть MDI приложение. В нем есть форма справочников. Форма одна, в ней фрэйм. В зависимости от переданного параметра фрэйм берет с базы и отображает/изменяет нужную инфу. Отвечает за это созданный во фрейме класс, компонент TreeView и функциональные кнопочки. Есть возможность открыть форму справочника многократно. При этом активным получается TreeView в последней открытой форме. То есть при попытке обратиться к TreeView.Selected, программа получает активную TTreeNode в последней открытой форме, вместо активной формы. Как это можно избежать?
В главной форме:
Код:
procedure TfrmMain.N7Click(Sender: TObject);
begin
OpenDirectory(1);
end;
procedure TfrmMain.N6Click(Sender: TObject);
begin
OpenDirectory(0);
end;
procedure TfrmMain.OpenDirectory(Cat: Integer);
var
fd:TfrmDir;
begin
fd:=TfrmDir.Create(self,cat);
end;
В открываемой форме:
Код:
constructor TfrmDir.Create(AOwner: TComponent; CatID: Integer);
begin
Dir:=CatID;
inherited Create(AOwner);
end;
procedure TfrmDir.FormShow(Sender: TObject);
begin
OpenDir(dir);
end;
procedure TfrmDir.OpenDir(DirID: Integer);
begin
frmCat1.ActivateFrame(catdir[DirID].CatID,false);
end;
Во фрэйме:
Код:
procedure TfrmCat.ActivateFrame(CatID:Integer;ViewID:boolean);
begin
catsys:=TCatSystem.Create;
CatSys.Connection:=Module.ADOCon;
CatSys.CatTableName:='tCatSystem';
CatSys.ID:='ID';
CatSys.CatName:='CatName';
CatSys.CatParent:='CatParent';
CatSys.RootCat:=CatID;
CatSys.ShowCatID:=ViewID;
CatSys.TV:=tv1;
CatSys.FeelingTree;
end;