MDI 폼으로 프로그램 중 난관에 봉착했네요..^^ 고수님들의 조언 부탁드립니다.
예를 들어 부모폼에 버튼이 두개 있고 버튼을 누르면 현재 열린 모든 child를 close,free하고 새로운 차일드폼을 생성합니다.
문제는..
차일드에서 다른 차일드를 생성할 필요가 있습니다.
궁리하던 중 부모폼의 버튼 이벤트를 차일드에서 호출을 하니... Access violation 발생. 되다 안되다....
문제는 버튼 이벤트를 호출하면 자기자신이 close 되면서 재귀할 곳이 없어지면 생기는 문제인 듯 한데요..
이럴때는 어떠한 방법을 써야 하는지 잘 모르겠네요..
새로운 폼을 먼저 생성하고 자기 자신을 죽여야 할까요...
아니면 다른 깔끔한 방법이 있을까요??
조언 부탁드립니다..^^
방법1.
스스로 free되고자 할때는 그냥 Close호출하시구요
OnClose이벤트에서 Action 을 caFree로 하세요
[Action caFree의 원리]
Action이 caFree로 해놓으면
폼이 Close되면서 PostMessage로 자신한테 종료하라는 메세지를 보냅니다.
그럼 Close함수 가 return 된후에 자신이 보낸 종료메세지를 받아서 스스로 free하게되죠
방법2.
Action:=caFree하지 않고 하는 방법은
위와같은방식으로 PostMessage로 하면
그냥 ButtonClick에서 free하도록 메세지 날리고
그걸 수신하는데서 스스로 free하면 됩니다.
방법3.
뭐 타이머 써도 되구요.. (그러기엔 배보다 배꼽이...)
권장하는 방법은 1번입니다.
그럼..