|
두 구문에 차이점을 알려드리면,..
Application->CreateForm(__classid(TForm1), &Form1);
이 것은, 폼을 만드는 명령에 해당하는 것이고요..
void __fastcall TForm1::FormCreate(TObject *Sender){...}
이 것은, 폼의 이벤트에 해당하는 것입니다.
폼을 만드는 명령은 써도 안써도 무관하지만, 기본적으로 폼을 만들때는 자동으로 메모리에 전부 만든 상태로 올라와 있고, 그 다음, Show 나 ShowModal 로 만들어진 폼을 보여주는 형식으로 짜여져 있습니다.
하지만, 해당 폼이 메신져처럼 같은 폼이 여러개가 동적생성 될 수 있다면, : Application->CreateForm(__classid(TForm1), &Form1); 이 명령으로 만들어 놓는 것보다, 그때그때 마다 동적 생성을 하는 루틴이 더 좋겠죠. 이 생성 부분은, Project - Option 에서 Forms 탭에서 Auto-Create Forms, Available Forms 에 폼의 위치를 정함으로써도 수정할 수 있습니다. (수정시 자동으로 Application->CreateForm(__classid(TForm1), &Form1); 이 구문이 삭제 혹은 추가 됩니다)
그리고 void __fastcall TForm1::FormCreate(TObject *Sender){...} 이 부분은, 이벤트로, 일반적으로 버튼을 클릭하면 OnClick 이벤트가 발생하는데 이와 비슷한 OnCreate 이벤트 입니다. OnCreate 는 폼이 만들어질때(정확히는 만들어 진 후!) 이벤트가 발생하는데, 이 때, 여러가지 사항을 변경할 수 있습니다. 예를들어, 버튼의 위치를 조절한다든지 이런 작업이 가능합니다.
주의하실 점은, 폼은 Project - Option 의 Forms 탭에서 정해진 순서대로 만들어지기 때문에, OnCreate문은, 당연히 폼의 순서대로 각 폼마다 발생됩니다. 만약 첫번째 만들어지는 폼의 OnCreate문에서 두번째 만들어지는 폼의 너비나 기타 등등을 바꾸려고 한다면, 아직 만들어지지 않은 상태니 오류가 나겠지요..
송경남 님이 쓰신 글 :
: 우선 제가 하려는 것은 일단 폼 하나를 만들고 그 폼에는 기본적으로 판넬 버튼등 필요한 컴포넌트들을 구성합니다..
: 그리고 다시 비디오 캠의 정보를 읽어 드려서 캠 드라이브가 설치 되어 있을경우 폼의 이미지 사이즈 등을 수정하는 것을 만들려고 합니다..
: 기본적으로 수행은 되는데..
:
: 이것을 dll로 모듈화를 시켜야 합니다..
: 캠 정보를 읽어서 다시 폼 설정하는 부분을 dll로 구성을 하였는데.. 안되네여..
:
: 이 과정에서 궁금한것은
:
: Application->CreateForm(__classid(TForm1), &Form1);
:
: void __fastcall TForm1::FormCreate(TObject *Sender){...}
:
: 이 두개의 구문의 차이점입니다.
: help를 보면 Initializes라 해서 초기에 생기는 거 같은데.. 수행 순서도 궁금하고요..
:
: 말로는 표현을 못하겠지만.. 어려풋이 이게 아닐까 싶은데.. 고수님들의 확실한 설명을 듣고 싶습니다..
:
: 정말 질문이 맞는건지도 모르겠습니다..
:
: 그럼 답변 부탁드립니다.. 고맙습니다..
:
|