|
아마도 버튼을 누르는 시점에서 생성 이벤트를 사용하시는 것 같습니다.
이럴때는 아래와 같이 해주시면 됩니다.
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이 클릭이 안되드군요..
:
: 해결 방안좀 알려 주세요.
|