아래와 같이 이벤트 핸들러를 만들었습니다.
TreeView를 통해 폼을 동적으로 띄우는 기능이지요.
이것을 위해 POpenPage라는 구조체를 만들어 TreeView에 연결했지요.
이건 중요한 것이 아니고...
그런데 이상한 일이 발생했습니다.
설명을 드리자면...
이렇게 동적으로 생성한 폼을 A , 그리고 생성된 A 에서 다시 동적으로 생성한 폼을
B 라고 했을 경우
B 에서 A의 폼에 있는 콤포넌트또는 퍼브릭 변수를
접근하려고 하면 Access Violation... 는 에러가 뜹니다.
뭐가 문제죠? 도와주세요.
참고로 A 폼을
A := TA.Create(Application);
A.Show;
이런 식으로 생성 시킬 경우에는 아무 문제가 없습니다.
procedure TMain_FORM.Main_TREEChange(Sender: TObject; Node: TTreeNode);
var
i: Integer;
FClass: TFormClass;
FForm: TForm;
begin
for i := 0 to Main_FORM.MDIChildCount -1 do
Main_FORM.MDIChildren[i].Close;
FClass := POpenPage(Main_TREE.Selected.Data)^.FormClass;
FForm := POpenPage(Main_TREE.Selected.Data)^.Form;
if FClass <> nil then begin
Application.CreateForm(FClass,FForm);
FForm.Show;
end;
end;