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