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
[42038] Re:[빌더]컴포넌트 만들기
박지훈.임프 [cbuilder] 1044 읽음    2005-09-28 21:40
만든 컴포넌트를 패키지 프로젝트에 넣어서 한번 설치하고 나면, 그다음번에는 그 패키지가 컴파일되려고 할 때 자동으로
패키지(bpl)이 C++빌더에서 언인스톨되고 컴파일된 후 다시 인스톨됩니다. 따라서 한번 설치된 패키지를 매번 다시
설치할 필요는 없습니다.

화면에 내용을 표시하기 위한 목적이라면 아무래도 컴포넌트가 낫습니다. 그냥 클래스로 만든다면, 그 클래스를 생성하고
표시하려 할 때 어디에 표시할지부터 여러가지 부분을 직접 관리해주어야 하고, 컴포넌트처럼 폼 위에 놓아두기가 불가능
하기 때문에 직접 생성(new)하고 파괴(delete)하는 과정도 해주어야 하고...

화면에 표시할 것이 없는 클래스(예를 들면 특정 동작을 하는 함수만 가진 클래스)라면 그냥 클래스로 만들어도 별 관계가
없겠지만 그렇지 않다면 컴포넌트로 만드는 것을 권합니다.

그리고 특정 종류의 정보를 표시하려는 용도라면 TLabel보다는 TCustomLabel을 상속받아 만드는 것이 낫습니다.
TLabel이 바로 이 TCustomLabel로부터 상속받은 클래스이고요.

두 클래스는 기능적으로는 전혀 차이가 없지만, TLabel에서 published로 선언된 속성 다수가 TCustomLabel에서는
protected로 선언되어 있습니다. 따라서 TCustomLabel로부터 상속받아 새 컴포넌트를 만들면 이런 속성들을 공개할
것인지 말 것인지를 직접 선택할 수 있지만, TLabel로부터 상속받으면 이미 TLabel에 공개되어있는 속성들을 숨길 방법이
없습니다.

님의 경우를 예를 들어 특정 종류의 정보만 표시하려 한다면, 그 컴포넌트를 사용하는 다른 개발자가 Caption을 마음대로
바꿀 수 없도록 하는 것이 좋겠죠. 하지만 TLabel로부터 상속받으면 그런 방법이 전혀 없습니다.

그럼..


ASURADA 님이 쓰신 글 :
: 클래스를 만들기가 쉽지 않네요.
:
: 화면에 특정 내용을 출력하는 컴포넌트를 만들려 하는데 VC++ 같은 경우 CWnd에서 상속을 받아 모두 데이터 관리 및 출력 루틴을 작성하면 되었는데...
:
: 빌더에서는 어떻게 저리를 해야할지 모르겠네요.
:
: 생각으로는 TLabel 을 상속 받아서 데이터 처리및 출력 루틴을 작성하면 될듯한데...
:
: 새 컴포넌트를 만들면 컴포넌트 팔레트에 등록되고 수정하고 다시 인스톨하고 하는 과정을 반복해야 하는건가요?
:
: 그냥 CPP 와 헤더파일로만 작성되어서 프로젝트에 포함시키면 되는.... 그런걸 원하거든요.
:
: 어떻게 해야할지....
:
: 혹시나 샘플이라도 구할 수 없나요?

+ -

관련 글 리스트
42023 [빌더]컴포넌트 만들기 ASURADA 808 2005/09/27
42038     Re:[빌더]컴포넌트 만들기 박지훈.임프 1044 2005/09/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.