감사합니다.
현재 C++Builder2010을 쓰고 있습니다.
님의 글의 도움을 받아 다음과 같이 원하는 기능 구현했습니다.
1) Propetry는 그냥 TPersistent 상속받아 만들었구요
2) PropertyEditor를 만들어서 등록하구, PropertyEditor의 GetValue를 override하셔서
원하는데로 문자열 만들어서 return하니.. 원하는 기능이 구현되네요
감사합니다.
그럼..
빌더 님이 쓰신 글 :
: 장성호 님이 쓰신 글 :
: :
Class-Property(그룹 프로퍼티)의 ObjectInspector에 간단 표시 방법에 대해..
: :
: : 컴포넌트를 만들고 있습니다.
: :
: :
: :
: :
: : 위 그림을 보시면
: : VCL의
Constraints나
Font같은 property는
: : class아래의 내용이 해당 프로퍼티에 라인에 정리해서 표시가 됩니다.
: :
: : 그런데 제가만든
CaptionOffset 이라는 property는
: : 하위에 내용이 윗쪽에 표시가 안되도 classname으로 그대로 나오는데요
: :
: : -----------------------------------------
: :
: : CaptionOffset 라는 Property는 vcl의 Constraints 소스를 보고 C++로 만든것입니다.
: :
: : 특별히 다른것은 없는데.. 어떻게 저렇게 나타나는지 궁금하네요
:
:
:
:
:
:
:
:
: 답변:
:
:
: 컴포넌트를 만들 때... 프로퍼티 에디터를 구현해 주지않고, Embarcadero 에서 기본으로 제공해 주고있는
: Default Property Editor 를 그대로 이용한 것 같군요. 사용하고 있는 툴 버젼도... RAD XE2가 아닌 것 같아 보이고요.
:
: Object Inspector에서 CaptionOffset 프로퍼티 값이.. 화면 상의 TCaptionOffset 식으로 보여지는 이유는...
: CaptionOffset 프로퍼티를 정의할 때... TPersistent 클래스를 이용해서 정의했기 때문입니다.
:
: TPersistent 대신 TComponent 클래스를 사용했다면, RAD XE2 의 경우에는 TCaptionOffset 타입명으로 보여주는
: 대신에.. 그 라인을 블랭크로 보여주었을 겁니다.
:
: RAD XE2에선 프로퍼티를 보여주는 Default Property Editor의 처리 방식을 바꿨습니다.
: Set 타입의 유형이 아니면 Font, Constraints 같은 프로퍼티도 RAD XE2에선 CaptionOffset 식으로 보여주게
: 됩니다.
:
: RAD XE2 에선 왜 이런 식으로 보여주게 될까요.
:
: 이유는 간단 합니다.
:
: 프로퍼티 타입을 정의할 때... TComponent 보다는... TPersistent 를 이용하는 게 더 효율적이기 때문 입니다.
:
: TObject -> TPersistent -> TCompont
:
: 상속 계층이 위와 같으니까... 특별한 경우가 아닌 한... TComponent 를 사용할 이유가 없는 거죠.
:
: Object Inspector 에서 캡쳐된 그림 처럼 보여주고자 한다면, 프로퍼티의 타입을 정의 할 때...
: TComponent 클래스를 사용하고, Embarcadero 사에서 제공해주고 있는 Default Property Editor를그대로
: 사용할 게 아니고... 프로퍼티 에디터를 직접 구현해서 등록해 줘야 겠죠. RAD XE2에선 그렇습니다.
:
:
: ...
:
: 다르게 컴파일 해서 캡쳐한 화면을 첨부하니까 비교해 보세요. (둘 다 .. 똑같은 컴포넌트 입니다)
:
:
:
: TPersistent를 사용해서 컴파일 했을 때....
:
:
:
:
: TComponent를 사용해서 컴파일 했을 때...
:
:
:
: ...