그렇군요 그럼 Showing은 동적생성이 아닌 Auto create forms에서 실행시 자동으로 생성되었을때만
쓸 수 있는 명령어이군요
답변 감사합니다.
주누 님이 쓰신 글 :
: 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"))
: : : : {
: : : : //
: : : : }
: : : : 이렇게도 해봤는데 창이 열려있는데 안걸리네요
: : : :
: : : : 창이 열려있는지 체크하는 또다른 방법을 알고 계신분 힌트좀 부탁드립니다.