두개의 폼을 생성하여, 하나는 MDIForm, 하나는 MDIChild로 지정하고, MDIForm에 두개의 버튼, Create와 Destroy 버튼을 만들고 이벤트 핸들러를 다음과 같이 작성하였습니다.
procedure TForm2.Click(Sender: TObject);
begin
form3 := TForm3.Create(self);
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
form3.Free;
end;
질문1. 이렇게 하면, Create 버튼을 누를때마다 폼이 생성되는데, Destroy 버튼을 누르면 바로 이전에 생성된 폼만 없어지고, 한번더 Destroy를 누르면 에러가 발생합니다.
왜 이런 에러가 발생하는지, 그리고 생성된 모든 폼을 없앨수 없을까요?
이 질문에 대한 답은 어떤 분이, 새로운 폼을 실행시키기 전에 실행되어 있는지 그 폼을 찾아보아, 실행되어 있으면, 활성화시키라 하셨는데, 그렇게 말고, 실행된 폼들을 닫을 수는 없을가요, 몇개가 실행되어 있던간에요...
질문2. 그리고 form3가 생성이 되었는데, form2에 생성된 버튼은 계속 보입니다.그러니까 버튼은 실제로 form2에 존재하는데 form3가 생성되고 난후에도 form3위에 그대로 보입니다. 어떻게 해야됩니까?
질문3. 폼을 닫을때, 위에 코딩한 free 하고, Action 특히 Cafree 하고, Close하고 어떤게 더 확실히 폼을 닫는건지. 책에는 Cafree가 Destructor를 호출하여 폼을 해제한다는데, 그게 확실히 닫는 것 같은데, 언젠가 제가 프로그래밍에 적용해보니, cafree로 해제하니까 다시 폼을 열때, 아이콘화되는 문제가 있던데...
부탁드립니다. 고수님들..