C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[26670] Re:ShowModal... help를 찾아봤지만,,,@_@;;
Modal [] 810 읽음    2003-08-09 15:08
요구르트 님이 쓰신 글 :
: 벌써 이 질문만 몇번쨰인데요..
: ShowModal을 이용해서 계속해서 폼을 띄우면서도 메인폼이 아닌 폼들은 지워지면서 새로운 폼을
: 만들려고 하는 것이거든요...
:
: 폼1(메인)   -> ->              폼2             -> ->           폼3
: 버튼클릭                          버튼클릭                            버튼클릭
: {                             {                              {
: Form2 = new TForm2(this);      Form3 = new TForm3(this);      Close();
: Form2->ShowModal();            Form3->ShowModal();            }
: }                              Close();
:                               }
: 이게 대충 제가 한 코드였는데요..
: 이렇게 하면 폼3이 뜰때 폼2가 지워지지가 않아서 이걸 지울려고 하는 것이거든요..
:
:
:
: 이런 제 허접 질문에 대해서..
: 헬프에서 ModalResult찾아보라고 하셔서 찾아봤더니..
: void __fastcall TOKRightDlg::OKBtnClick(TObject *Sender)
: { ModalResult = mrOk; }
: void __fastcall TOKRightDlg::CancelBtnClick(TObject *Sender)
: { ModalResult = mrCancel; }
:
: This code brings up the modal dialog from Form1 when a button is clicked.  It causes a Beep if the OK button is clicked.
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: { if (OKRightDlg->ShowModal() == mrOk)     MessageBeep(0); }
:
: 이렇게 나와 있는데요..
:
: 그리고 어떤 님이..
: "" ShowModal() == mrOk될때 새로운 윈도우를 또 ShowModal() 하면 Main Form은 계속 살아 있고 Form2떳따가 Form2 mrOk되면 Form3뜨게 하고 Form2죽고... 이런식으로 하면 될것 같아서요 ""
: 라고 충고를 주셨거든요..
:
: 그러니깐 그 말씀들이 기존의 ShowModal()로 띄운 새폼에 대해서 ModalResult를 mrOk로 한다음  새로운 창을 띄우라는 말 아닌가요? (물론 제 허접한 추측입니다...ㅠㅠ;)
:
: 그래서..
: 이렇게 고쳐봤거든요..
:
: 폼1(메인)   -> ->             폼2             -> ->         폼3
: 버튼클릭                       버튼클릭                           버튼클릭
: {                          { ModalResult = mrOk;           {
: Form2 = new TForm2(this);    Form3 = new TForm3(this);      Close();
: Form2->ShowModal();          Form3->ShowModal();           }
: }                            Close();
:                            }
:
: 그랬더니 역시나 안되더군요..ㅜㅜ;
:
: 어떻게 고쳐야하는거죠???
:
:
:
:
:
:



FormA에서 FormB를 ShowModal()했다면 FormA를 닫으려해도 즉시 닫히지는 않고 FormB가 닫힌 후에 FormA가 닫힙니다.

따라서, 님의 문제의 경우에는 Form3을 Form1에서 ShowModal하면 해결할 수 있습니다.
(Form1에서, Form2를 ShowModal한 다음 Form2가 닫힌 후 Form3을 ShowModal하면 됨)
그리고 Form2의 ModalResult 값이 무엇인지도 Form1에서 검사하면 됩니다.

한편, ShowModal()하면 그 후의 코드들의 실행은 블럭됩니다.
즉, ShowModal()된 폼의 실행이 끝난 후(즉, ShowModal()된 폼이 닫힌 후)에 실행됩니다.


+ -

관련 글 리스트
26663 ShowModal... help를 찾아봤지만,,,@_@;; 요구르트 850 2003/08/09
26671     Re:ShowModal... help를 찾아봤지만,,,@_@;; smleelms 716 2003/08/09
26670     Re:ShowModal... help를 찾아봤지만,,,@_@;; Modal 810 2003/08/09
26666     Re:ShowModal... help를 찾아봤지만,,,@_@;; 꼴.Free 853 2003/08/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.