<!--CodeS-->
if not Assigned(Form1) then begin
Form1 := TForm.Create(MainForm);
Form1.WindowState := wsMaximized;
end
else Form1.Show;
<!--CodeE-->
MDI 메인에 작성되어진 코드입니다.
그리고 Form1 은 MDI Child 입니다.
MDI Child는 닫으면 최소화가 되길래
OnClose 이벤트에
ActiveControl := Nil;
Self.Free;
를 해주어서 완전 날려버렸습니다.
그렇지만 MainForm 에 Form1 에는 그 할당받은 주소가 남아 있어서
Assigned 를 호출하면 True 를 반환하는데
Assigned 말고 포인터가 가르키는 주소가 유효한지 검사하는 함수는 없나요?
Form1(MID Child 폼 가정시 지금은 TForm에서 생성되었기에 Normal form)이
1회만 생성되기만을 원하신다면..
MDIChildCount, MDIChildren을 사용해보세요
참 그리고 예시된 문에서 TForm으로 생성되는 것이므로 MDIChild폼이 아닌것은 아시죠
아래문장의 내용 그대로 사용할 생각 이시면 Controls 또는 Screen.Forms을 사용하세요
그리고 Close시 Suicide 코드는 웬지 이상하지 않나요?
Action := caFree;로 대체 하시는것이 좋을듯 합니다.