|
원하시는 대로 하셔도 됩니다.
일반적인 경우 폼이 처음 단 한번 생성되어 종료시까지 사용되게 되는 경우에는 전역을 사용하는게 오히려 편합니다만, 예를 들어 동적으로 할당, 해제 해야되는 경우라든지 여러개의 같은 폼 객체를 생성해야 되는 경우 등에는 당연히 전역으로 선언할 수가 없을 거라 생각되네요. 만드시는 프로그램의 구조에 따라 적절하게 사용하시는게 정답일 겁니다만, 큰 문제가 없다면 전역으로 선언된 걸 쓴다고 해서 문제는 없을 거 같습니다.
일단은 적당히 쓰시다 보면 이런 경우에는 이런식으로 하면 좋을 거 같다는 걸 경험적으로 아시게 되리라 생각됩니다.
newhuni 님이 쓰신 글 :
: ayh님 답변 감사드립니다... (--)(__)(--)
:
: 그럼. 두 폼 모두 전역으로 선언되므로 첫번째 방식으로 코딩을 하는게 맞는건가요??
:
: ayh 님이 쓰신 글 :
: : 기본적으로 c++ builder나 delphi에서 폼이나 데이터모듈등을 작성하게 되면 전역으로 선언되게 됩니다.
: : 폼을 추가하시고 헤더 파일과 cpp파일을 보시면
: : extern PACKAGE TForm1 *Form1;
: : TForm1 *Form1;
: : 와 같은 형태로 전역변수로 선언되게 됩니다.
: :
: : 프로젝트명.cpp 파일을 보시면 (예를 들면, Project1.cpp)
: : Application->CreateForm(__classid(TForm1), &Form1);
: : 와 같은 코드로 자동 할당해주게 됩니다.
: :
: : 만약 폼 하나를 추가하시면 이 파일에서
: : Application->CreateForm(__classid(TForm1), &Form1);
: : Application->CreateForm(__classid(TForm2), &Form2);
: : 이런 식으로 폼을 할당하는 부분이 늘어나는 걸 알 수 있습니다.
: :
: : 이러한 전역 변수를 통한 방식이 싫으시다면 해당 폼의 멤버변수로 선언하셔서 사용하실 수 있습니다.
: :
: : 예를 들어 TForm1의 private으로 TForm2 *FormTest ;
: : 와 같은 형태로 선언하시고, TForm1의 생성자나 OnCreate 이벤트 핸들러에서 TForm1을 new 연산자를 통해 할당하는 방식도 가능할 겁니다.
: :
: : 이런 경우 this->FormTest->DoSomething(); 과 같은 형태로 코딩하시게 될겁니다.
: :
: : 이 때 위에서 말씀드린 전역변수로 자동할당되는 걸 없애고 싶으시다면, 메뉴->Project->Option 으로 들어가셔서 Auto-Create Forms에서 원하시는 폼이나 데이터모듈등을 available-forms 쪽으로 옮기시면 됩니다.
: :
: : 자세한 건 강좌나 팁 등을 찾아보시면 더 자세한 내용을 찾으실 수 있으실 겁니다.
: :
: :
: :
: : newhuni 님이 쓰신 글 :
: : : 기초적인 질문 하나 드릴께요...
: : :
: : : 두개의 폼(A,B)이 있습니다. 이때...
: : : B폼에서 A폼에 있는 컴포넌트를 제어하기 위해서 A폼의 헤더파일을 B소스에 선언하고
: : : "A->컴포넌트이름"으로 제어할 수가 있는데... 이 방식은 잘못된것 같아서요...
: : :
: : : 이럴때 어떻게 처리해야 말끔할까요??
|