|
아 제가 말을 좀 잘못했는데
메인에서 버튼을 누르면 실행되는건
Close() 하나입니다.
ShowMessage를 넣어서 확인해봤더니 차일드폼 OnCloseQuery에서 열리고 끝입니다.
좀 더 자세히 설명해드리면
차일드 폼의 OnCloseQuery()를 보면
if(){....
Timer1->enabled=true;
CanClose=false;
}
else{
CanClose=true;
}
이런 식으로 되어있고
Timer1는 기타 변수들을 바꿔준다음 다시 false로 되고
해당 차일드폼을 Close()해주는 식으로 되어있습니다.
차일드폼이 열려있을 때 처음 OnCloseQuery로 오면 CanClose 값이 false가 됩니다.
여기서 Timer1를 통해서 다시 Close()를 받아서(이 때는 CanClose가 true) 해당 차일드 폼은 닫히고 거기서 끝이더군요.
여기서 CanClose 값을 항상 true로 해봤는데 이 때는 종료에는 문제가 없더군요(수정해야할 값들이 수정이 안되겠지만).
설명이 난잡하군요.... -_-;
장성호 님이 쓰신 글 :
: 종료 누르면
:
: 차일드 폼을 먼저 닫는다고 했는데...
:
: 그냥 메인폼만 Close하세요
: 그러면 차일드폼은 알아서 Close됩니다.
:
:
: TCustomForm의 소스를 보면
:
: 현재 Close되는 폼이 Application->MainForm 일때
: Application->Terminate(); 를 호출합니다.
:
: Application->Terminate(); 는 프로그램을 종료한다는 뜻이죠
:
: 그럼..
:
:
: 펭귄 님이 쓰신 글 :
: : 안녕하세요
: :
: : 프로그램을 손보고 있는데
: :
: : 차일드폼이 열려있는 상태에서 프로그램 종료 버튼을 누르면 프로그램 종료가 되지 않네요.
: :
: : 살펴보니까
: :
: : 종료를 누르면 차일드 폼을 먼저 닫는데
: :
: : 차일드 폼의 onclosequery에서
: :
: : canclose가 false가 되는 경우 거기서 끝나네요.
: :
: : 원래 이렇게 되는건가요?
: :
: : 이걸 메인에서 종료를 하면 차일드폼이 다 닫히고 프로그램까지 종료가 되게 하고 싶은데
: :
: : 차일드폼 쪽에서 close()되기 전에 더 먼저 불러지는 함수같은건 없나요
|