Modal로 띄운폼 하이드시… [VB Form 종료]

질문&답변 
Modal로 띄운폼 하이드시…  | etc 2006-08-29 오후 7:59:25
조동진 (dj62745923)    번호: 248824   / 평점:  (-)  / 읽음:44
Modal로 띄운폼을 하이드 했다 Modal로 다시 띄우면


프로그램이 종료가 되지 않네요;
첨부파일 확인해주세요..
Modal로 띄웠다가 하이드 했다가 두번이상하면 종료가 안돼요..
물론.. Unload 이벤트로 안일어나구요..
왜그런지 해결해주세요!!



[답변]맞을라나 몰겟슴당.. 2006-08-30 오전 1:56:03
이석재 (foxmotor)    번호: 248845   / 평점:  (-)  
Modal루 띄우신것과는 문제가 아닌듯 싶은데요,.,,
문제는
Private Sub Form_Unload(Cancel As Integer)
       Cancel = 1
End Sub


폼의 종료를 취소한다는 뜻입니다…
 
종료가 아니된 폼이 있으므로 프로그램의 종료가 아니되는 것 아닐지요?



[답변]Cancel=1은 폼2 종료를 막기위해… 2006-08-30 오전 6:42:13
조동진 (dj62745923)    번호: 248848   / 평점:  (-)  
Cancel=1은 폼2 종료를 막기위해 해놓은거구요


폼1버튼 클릭 -> 폼2로드 -> 폼2하이드버튼 클릭 -> 폼1버튼 클릭 -> 폼2하이드버튼클릭 -> 그다음에 폼 1번 오른쪽 위 X(종료) 버튼을 누르면
버튼이 눌리지도 않고 종료에 관한 Unload 이벤트도 안일어나요..
다시한번 확인해주세요..
폼2의 Cancel=1은 단순히 로드된 폼2를 종료시키지 못하게 하는건데..
 
 
[답변]모달폼이 종료해야 Form1이 활성화됩니다. 2006-08-30 오전 7:25:11
고배영 (topkoh)    번호: 248850   / 평점:  (-)  
Modal로 띄운폼이 종료해야 Form1이 실행 됩니다.
Form2를 히든으로 감췄다해도 Form2는 실행되고 있죠..
Form1은 종료뿐만 아니라 어떤컨트롤을 누르드라도 응답을 하지 않습니다.
왜냐하면 Form2가 모달로 띄워졌기 때문이죠..
참고하세요..
 
 
[답변]이런 경우도 있군요.. 종료 방법론입니다.  2006-08-30 오전 9:03:12
신종흔 (chiuoo)    번호: 248854   / 평점:  (-)  
모듈하나 만들고


public g_ForcedEND as boolean
Form1 폼 이벤트 중
Form_QueryUnload 에서 g_ForcedEND를 True 합니다.
(쿼리언로드는 폼에서 종료(X)버튼을 누를때 발생됩니다. 이거 발생된후에 Unload이벤트가 발생되죠)
Form2 폼 이벤트 중
Form_Unload에서 cancel = 1위에다가 if g_ForcedEND = true then exit sub 를 추가해보세요.
자 끝났습니다.
Form1의 종료(x)버튼을 누를 경우 플래그가 True가 되어 Form2가 먼저종료가 되고 Form1이 종료가 됩니다.
종료가 안되는 이유를 들자면 vbmodal이라는 것은 시스템 모달로서 이것이외의 모든 윈도우들의 이벤트를 모조리 이 모달폼이
받게 됩니다.
위에 소스 적용전에 확인 해보시면 알겠지만 form2를 hide시킨 후에 form1을 종료시키려할 때 발생되는 이벤트는
form2의 Unload이벤트입니다. 브레이크 포인트(F9)를 해보시면 쉽게 알게 될겁니다. 그럼 즐프! ^^/

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다