BCB6기준으로 폼을 생성할 때 생기는 전역 변수는
프로젝트 옵션에 있는 'AutoCreate Form'기능에 의해서 덮혀 쓰이거나 할 수 있습니다.
만약 Form1 생성자나 Form1::CreateForm 내부에서 Form2를 동적 생성하면
이후에 Form2가 자동으로 생성 될때 덮여 쓰여서 다른 내용이 될수도 있습니다.
폼확인 님이 쓰신 글 :
: 아 제가 질문을 잘못드렸네요
:
: Form을 새로 만들면
: TForm2 *Form2;
: 라고 전역으로 자동 선언이 되어 있지요
:
: 아래 동적생성한 폼을
: Form2 = new TForm2(this);
:
: Form2->Show();
:
: 이렇게 한거였거든요 ㅎㅎ
: 근데 저렇게해도
: Form2->Showing이 안먹더라고요.
:
: 답변 감사합니다.
:
: 장성호 님이 쓰신 글 :
: : 동적으로 생성한 폼의 포인터를 pFormCheckTest 변수에 넣어서 사용했으니
: :
: : 당연히 FormCheckTest 에 들어냈는 내용과는 다를 수밖에 없죠
: :
: : ==============================================
: :
: : 방법 1)
: :
: : 동적생성한 폼을 global변수에 할당하여 체크
: : FormCheckTest = new TFormCheckTest(this);
: :
: :
: : 방법2)
: : Application->FindComponent 같은 함수는 없습니다.
: : 대신 Application 처럼 자동생성되는 Global객체 중 Screen이라는 객체가 있습니다.
: :
: :
: : Screen->FormCount ; // TCustmForm을 상속받아 만들어진 Form의 갯수
: : Screen->Forms // TCustmForm을 상속받아 만들어진 Form의 포인터 리스트
: :
: :
: : 위 Screen객체가 가지고 있는 Form리스트에 생성된 폼의 포인터가 들어가 있으니
: : 체크해 보시면 됩니다.
: :
: : ClassName으로 체크하시면 될듯 하네요
: :
: : 그럼..
: :
: :
: : 폼확인 님이 쓰신 글 :
: : : 제가
: : :
: : : TForm1 에서
: : :
: : : TFormCheckTest *pFormCheckTest = new TFormCheckTest(this);
: : :
: : : pFormCheckTest->Show();
: : :
: : : 를 해서 폼을 생성하는데요
: : :
: : : TForm1에서 버튼을 누르면
: : :
: : : if(FormCheckTest->Showing)
: : : {
: : : //
: : : }
: : : 이렇게 체크를 해봤는데 안되더라고요. 동적생성한 폼은 FormCheckTest가 아닐수도 있다고 하더라고요.
: : :
: : : 그래서
: : :
: : : if(Application->FindComponent("FormCheckTest"))
: : : {
: : : //
: : : }
: : : 이렇게도 해봤는데 창이 열려있는데 안걸리네요
: : :
: : : 창이 열려있는지 체크하는 또다른 방법을 알고 계신분 힌트좀 부탁드립니다.