|
요구르트 님이 쓰신 글 :
: 여러개의 폼을 모달로 차례차례 띄웠다, 지웠다..
: 그러면서 입력을 받아야하는 것이거든요..
:
: 여기 질문 올려서 답변 얻은 것이 이건데..
:
: 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라는 것이 객체를 새로 생성하는 것이기 때문입니다.
|