C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[47503] Re:두 Form간의 컴포넌트 제어... 질문드립니다.
ayh [h1800] 995 읽음    2006-12-21 04:34
기본적으로 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->컴포넌트이름"으로 제어할 수가 있는데... 이 방식은 잘못된것 같아서요...
:
: 이럴때 어떻게 처리해야 말끔할까요??

+ -

관련 글 리스트
47492 두 Form간의 컴포넌트 제어... 질문드립니다. newhuni 846 2006/12/20
47503     Re:두 Form간의 컴포넌트 제어... 질문드립니다. ayh 995 2006/12/21
47505         Re:Re:두 Form간의 컴포넌트 제어... 질문드립니다. newhuni 860 2006/12/21
47510             Re:Re:Re:두 Form간의 컴포넌트 제어... 질문드립니다. ayh 957 2006/12/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.