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
[71488] Re:form 종료확인 어떻게하나요?
빌더초보 [] 3216 읽음    2014-06-26 20:47
중복으로 생성해서 사용하는게 아니면, TForm1클래스의 생성자나 상속된 TForm클래스의 OnCreate, OnShow 등의 이벤트에서
TForm2를 한번만 생성하고, Form1의 버튼 이벤트에는 Form2->Show()만 넣으면 가장 쉬울텐데...
이렇게 할 수 없는 상황인가보죠?

그렇다면... 아래와 같은 방법도 있습니다.

//---------------------------------------------------------------------------
TForm2 *Form2=0;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
	if (Form2==0) {
		Form2 = new TForm2(this);
		Form2->OnClose=Form2Close;
		Form2->Show();
	}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Form2Close(TObject *Sender, TCloseAction &Action)
{
	delete Form2;
	Form2=0;
}
//---------------------------------------------------------------------------


TForm2 의 OnClose 함수를 TForm1에서 정의 하여, TForm2를 생성하는 시점에 OnClose함수를 연결해줍니다.
이렇게하면 TForm1의 변수나 함수를 TForm2에서도 쓸 수가 있기 때문에 종료하는 시점에 변수를 변경 할 수 있죠.

Application->CreateForm(__classid(TForm2), &Form2);  대신
Form2 = new TForm2(this); 를 쓴 이유는...
저 문법을 제가 몰라서 입니다. ㅎㅎ...

Application->CreateForm(__classid(TForm2), &Form2);을 써도 되긴 하더군요.

그럼...



자비를 님이 쓰신 글 :
: 제가 지금 할려는건 form1에서 버튼을 누르면 form2가 열리는 것을 하려고 합니다.
: 그래서 form1의 버튼을 누르면 Application->CreateForm(__classid(TForm2), &Form2);을 이용해 form2를 열도록 하였습니다.
:
: 그런데 이 함수게 form을 새로 생성하는거라 버튼을 계속 누르면 누르는 만큼 form을 생성해서 조건문을 둬서 temp가 0일때만 생성하고 생하고나면 1로 바꿔주는데 이게 form2가 종료되면 이 변수의 값도 다시 0으로 변경해줘야 하는데 form2의 종료를 확인 하는 법을 모르겠어요... 확인 방법이 있으면 좀 알려주세요...
:
: 그리고 혹시나 지금 제가 하려는 방법중에 다른 방법이 있다면 알려주시면 고맙겠습니다.

+ -

관련 글 리스트
71487 form 종료확인 어떻게하나요? 자비를 3054 2014/06/26
71488     Re:form 종료확인 어떻게하나요? 빌더초보 3216 2014/06/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.