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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[642] Object Inspector 에서 특정 Property 보이지 않게 하려면
이정구 [appleii] 6803 읽음    2007-04-30 20:51
상위 컴포넌트를 상속받아서 새로운 컴포넌트를 만들고 싶을 때 필요없는 Property 가 Object Inspector 에 나올때가 있습니다.
상위 class 에서 __published 된 property 들은 하위 class 에서 없앨 수 없습니다. 그러나 보이지 않도록 할 수는 있습니다.
상속받은 Property 들을 완전하게 없애버리는 것은 안되지만 화면에 표시되지 않도록 하는 방법은 있습니다.

TLabel 을 상속받아서 TMyLabel 을 만들고 Hint 속성이 Object Inspector 에 나타나지 않도록 하려면 다음과 같이 합니다.

class PACKAGE TMyLabel : public TLabel
{
  private :
 
  public  :
 
  __published:
    __property AnsiString Hint={};
};




위와 같이 하면 TMyLabel 에서는 Hint 속성이 Object Inspector 에 나타나지 않습니다. 그러나, 없애버린것이 아니기
때문에 Code Completion 에서는 나타나게 됩니다. read , write 를 지정해 주지 않았기 때문에 사용할 수는 없습니다.
만약 내가 원하는 속성만 가지도록 하려면 좀 더 상위 class 로부터 상속받아야 합니다.

위 방법을 응용하여 Event 도 나타나지 않도록 할 수 있습니다.
만약, OnClick 이벤트가 나타나지 않도록 하고 싶다면 다음과 같이 합니다.
class PACKAGE TMyLabel : public TLabel
{
  private :
 
  public  :
 
  __published:
    __property TNotifyEvent OnClick={};
};


상위 class , 예를 들어 TCustom ... 으로 시작하는 것들은 property 가 protected 로 되어 있습니다. 즉, 하위 class 에서
상속받아서 __published 섹션에 넣어야 나타나는 것입니다. 이것을 이용하면 원하는 property 만 나오게 하기 위해서
TCustom... 으로 부터 상속받아서 원하는 것만 __published 에 넣으면 됩니다. 하지만, Hint 같은 것들은 어쩔 수 없이
나타납니다. 그것마저 보이지 않게 하려면 위의 방법을 써야 합니다. 제대로된 방법은 아니고 그야말로 꼼수입니다.


P.S. :
반대로 할아버지(?) class 에서 상속받았으나 아버지 class 에서 나타나지 않은 property 가 있을 수 있습니다.

TCustomControl 은 Canvas property 가 있지만 후손인 TCustomPanel 은 Canvas 를 보여주지 않습니다.
따라서 TCustomPanel 을 상속받은 TPanel 에서는 Canvas property 가 나타나지 않습니다.

단지 보여주지 않는 것이지 없는 것은 아니므로 보이도록 만들면 됩니다.
class TMyPanel : public TPanel
{
  public:
    __property Canvas;
};


김태선 님께서 올려주신 팁이 있으므로 자세한 것은 그것을 참고하세요.

http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=546

+ -

관련 글 리스트
642 Object Inspector 에서 특정 Property 보이지 않게 하려면 이정구 6803 2007/04/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.