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
[24590] Re:[질문] form2가 생성 되었는지 안됬는지 어떻게 알수 있죠?
유영인.Chris [cuperido] 658 읽음    2003-03-04 13:39
아마도 버튼을 누르는 시점에서 생성 이벤트를 사용하시는 것 같습니다.
이럴때는 아래와 같이 해주시면 됩니다.

void __fastcall TMain::Button1Click(TObject *Sender)
{

TForm             *NEWFORM = new TForm(Application);


if(!Application->FindComponent("SUBFORM")) {
   NEWFORM->Name = "SUBFORM";
   NEWFORM->Show();
}

}

위 소스에서 새로 뜬 NEWFORM의 CloseAction에서 caFree를 해주셔야 합니다. 그렇지 않은경우에는, 폼의 X 를 눌러도 폼이 메모리에서 사라지는 것이 아니라, 일시적으로 화면에서만 보이지 않는것이기 때문에 메모리 누수가 되고, 위 소스는 당연히 폼이 있는 것으로 인식을 하기 때문에 정상적으로 동작하지 않습니다.

그리고, 폼이 일시적인 임시 폼이 아니라면, 디자인을 먼저 해두시는 것도 좋은 방법입니다. 이 경우에는 폼의 이름이 이미 원하시는 대로 정의가 되어 있으므로 (여기서는 Form2 라고 가정) 아래와 같이 처리하실 수 있습니다.

void __fastcall TMain::Button1Click(TObject *Sender)
{

if(!Form2->Visible) Form2->Show();

}


강영준 님이 쓰신 글 :
: Form1에서 Form2를 생성할때 Form2의 생성여부를 판단 해야 될거 같은데요..
:
: Form2->Show 를 사용하면 버튼 클릭때 마다 폼이 생성되구.
:
: Form2->ShowModal() 를 사용하면 Form2가 종료 되기 전까진 Form1이 클릭이 안되드군요..
:
: 해결 방안좀 알려 주세요.

+ -

관련 글 리스트
24567 [질문] form2가 생성 되었는지 안됬는지 어떻게 알수 있죠? 강영준 643 2003/03/03
31989     Re:[질문] form2가 생성 되었는지 안됬는지 어떻게 알수 있죠? smleelms 641 2003/03/03
31988     Re:[질문] form2가 생성 되었는지 안됬는지 어떻게 알수 있죠? Emmortal.초짜 619 2003/03/03
24590     Re:[질문] form2가 생성 되었는지 안됬는지 어떻게 알수 있죠? 유영인.Chris 658 2003/03/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.