음....
MDIForm에서 Childform을 동적 생성하고 삭제하고 있습니다.
일반적인 생성과 삭제는 별 문제가 없었는데, 다음의 경우에
에러가 생기네요.
.
.
procedure MainForm.N1click(Sender:Tobject);
Var form2: TForm2;
begin
if MessageDlg('사용중인 창을 닫습니다', mtConfirmation, [mbYes, mbNo],
0) = mrYes then
begin
form1.close;
form2 := TForm2.Creat(Application);
form2.show;
end;
여기에서 form1.close에서 에러가 납니다.
물론 form1의 Onclose 이벤트에 Action := Cafree를 적어 주었고,
form1은 동적 생성한 폼입니다.
MainForm은 fsMDIForm 입니다.
제가 델파이를 안쓰던 기간이 꽤 길어서 잊어 먹은게 많걸랑요.
그래서 에러가 나는 이유를 도저히 모르겠네요.
여러 고수님들의 조언 부탁드립니다.
꾸벅꾸벅...
> 음....
>
> MDIForm에서 Childform을 동적 생성하고 삭제하고 있습니다.
> 일반적인 생성과 삭제는 별 문제가 없었는데, 다음의 경우에
> 에러가 생기네요.
> .
> .
> procedure MainForm.N1click(Sender:Tobject);
> Var form2: TForm2;
> begin
> if MessageDlg('사용중인 창을 닫습니다', mtConfirmation, [mbYes, mbNo],
> 0) = mrYes then
> begin
> form1.close;
>
> form2 := TForm2.Creat(Application);
> form2.show;
> end;
> 여기에서 form1.close에서 에러가 납니다.
>
> 물론 form1의 Onclose 이벤트에 Action := Cafree를 적어 주었고,
> form1은 동적 생성한 폼입니다.
>
> MainForm은 fsMDIForm 입니다.
>
> 제가 델파이를 안쓰던 기간이 꽤 길어서 잊어 먹은게 많걸랑요.
> 그래서 에러가 나는 이유를 도저히 모르겠네요.
>
> 여러 고수님들의 조언 부탁드립니다.
>
> 꾸벅꾸벅...
안녕하세요.
혹시 폼1을 지역변수로 선언한뒤 동적 생성시켜주신건 아닌지요...그리고 사용할때는 전역적인 폼1을 사용한건 아닌지요..
예를 들어...
procedure MainForm.N1click(Sender:Tobject);
Var
form2: TForm2; // 지역변수라서 프로시져가 끝날때 이 변수는 더이상 엑세스할수 없습니다.
begin
form2 := TForm2.Create(Application);
...
...
...
end;
procedure MainForm.Test;
begin
form2.Caption := '111'; <<= 엑세스 바이올레이션이 납니다.
end;