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
[26719] Re:모달 문제 이것보다 좋은 방법이 있겠죠..?
객체 [] 660 읽음    2003-08-13 22:06
요구르트 님이 쓰신 글 :
: 여러개의 폼을 모달로 차례차례 띄웠다, 지웠다..
: 그러면서 입력을 받아야하는 것이거든요..
:
: 여기 질문 올려서 답변 얻은 것이 이건데..
:
: Form7 = new TForm7(thils)
: if(Form7->ShowModal() == mrOk) {
:    Form8 = new TForm8(thils)
:    if(Form8->ShowModal() == mrOk) {
:       Form9 = new TForm9(this)
:       Form9->ShowModal();
:       delete Form4;
:    }
:    delete Form8;
: }
: delete Form7;
:
: 이걸로 하면 입력을 계속 받을수는 있는데..
: 왜 입력창이 여러개이니깐..
:
: [이전][다시쓰기][다음] 이렇게 세개의 단추가 있는데..
: 여기서 다음만 눌러서 완료가 된다면, 위의 코드도 문제가 없는데..
: [이전]을 누르면 문제가 생겨서..
:
:
: 제가 좀 고쳐봤거든요..
:
: while(1)  {
:  Form7 = new TForm7(this);
:  if(Form7->ShowModal() == mrOk) {
:
:    while(1)  {
:       Form8 = new TForm8(this);
:       if(Form8->ShowModal() == mrOk) {
:
:         while(1)   {
:           Form9 = new TForm9(this);
:           if(Form9->ShowModal() == mrOk) {
:
:              Form11 = new TForm11(this);
:              Form11->ShowModal();         }
:           else if(Form9->ShowModal() == mrCancel) {
:             break;                                }
:
:         }// 세번째 while
:         if(Form9->ShowModal() == mrCancel)
:            continue;
:         else
:            break;
:                                       } //Form8 if문
:       else if(Form8->ShowModal() == mrCancel) break;
:
:    }// 두번째 while
:    if(Form8->ShowModal() == mrCancel) continue;
:
:  }//폼7 if
:  break;
: }// 첫번째 while
:
: 이렇게요..
:
: 근데 여기서도 약간의 문제가 있더라구요..
:
: 문제1.
: [이전] 버튼을 두번 눌러야 이전창으로 가더라구요..?
: 아무래도 while문에서 빠져나왔을때..
: 모두 완료가 되었는지 아니면 이전으로 넘어가야 하는지 검사하기위해..
: 대충 else if(Form8->ShowModal() == mrCancel) break; 이렇게 검사를 하는데..
: 여기서 이전키를 하나 더 먹어버리는것 같은데.. 맞나요?
: 맞다면.. 이런 코드 없이 그냥 이전키 하나만으로 처리할 순 없을까요?
:
: 문제2.
: [이전] 버튼을 두번 눌르면 일단 이전 퐁으로 가긴 가는데..
: 이전 폼으로 돌아가보면..
: 이전에 입력했던게.. 다 지워져 있더라구요??
: 이거 어떻게 지워지지 않게 못하나요??

문제2의 원인:
while(1)  {
  Form7 = new TForm7(this);
}
위에서 while문의 각 라운드에서 From7이 동일하다고 생각하신다면 잘못 생각하신 것입니다.
각 라운드마다 서로 다릅니다.
왜냐구요? new라는 것이 객체를 새로 생성하는 것이기 때문입니다.




+ -

관련 글 리스트
26700 모달 문제 이것보다 좋은 방법이 있겠죠..? 요구르트 776 2003/08/12
33068     Re:모달 문제 이것보다 좋은 방법이 있겠죠..? 땅주인 642 2003/08/14
33067     Re:모달 문제 이것보다 좋은 방법이 있겠죠..? 김정환.(-_-a 725 2003/08/12
33066     Re:모달 문제 이것보다 좋은 방법이 있겠죠..? 강영준 651 2003/08/12
33065     Re:모달 문제 이것보다 좋은 방법이 있겠죠..? skjoon 719 2003/08/12
26719     Re:모달 문제 이것보다 좋은 방법이 있겠죠..? 객체 660 2003/08/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.