BevelWidth 는 TCustomPanel에 있는 protected 의 property 이구요
실제는 TCustomPanel의 private 멤버인 FBevelWidth 이죠
TCustomPanel에서 이벤트 핸들러 같은것을 제공하지 않으니
직접 만들수 밖에 없을듯 하네요
방법은 간단합니다.
TCustomPanel에 있는 property BevelWidth 를 재 정의 하시면 됩니다.
class TMyPanel : public TPanel//CustomPanel
{
private:
void _fastcall SetMyBevelWidth(int value)
{
//필요한 코드1
TCustomPanel::BevelWidth=value;
//필요한 코드2
}
int _fastcall GetMyBevelWidth()
{
return TCustomPanel::BevelWidth;
}
public:
__fastcall TMyPanel(Classes::TComponent* AOwner)
: TPanel(AOwner)
{
//
}
__property Controls::TBevelWidth BevelWidth = {read=GetMyBevelWidth, write=SetMyBevelWidth, default=1};
};
위와같이 해 놓으면
TMyPanel의 BevelWidth를 수정하게 되면 SetMyBevelWidth 가 호출됩니다.
그러므로 원하시는 기능은 SetMyBevelWidth 메소드에서 하면 될것입니다.
두번째 질문인지 모르겠는데...
TEXTCHANGED 에 대해서 무엇을 물어보는지 이해가 잘 안됩니다.
질문이 잘 이해가 되지 않지만 혹시 Panel 의 Caption을 변경하는 메세지를 잡고자 하는것이라면
WM_SETTEXT 메세지를 잡으시면 됩니다.
그럼..
skjoon 님이 쓰신 글 :
: TCustomPanel을 상속받아 컴포넌트를 만들고 있습니다.
:
: Panel 내부에 그리드 형태의 그림을 그리는데요.
: AutoSize라는 속성을 만들어서 그리드의 크기에 맞춰서 자동으로 Panel의 크기도 바꿔주려고 합니다.
: 그러다보니 BevelWidth 가 변경되는 시점에서 변경된 BevelWidth만큼 Panel 크기를 조정해줘야 할 필요가 있습니다.
:
: 혹시 컴포넌트 메시지(CM_TEXTCHANGED 등과 같은...)에 관련된 메시지가 있나요?
: 제가 찾아봤을 땐 없는 것 같습니다만...
:
: Panel의 BevelWidth 값이 변경되는 시점에서 이를 확인할 수 있는 방법을 아시는 분 계시면 도움 부탁드리겠습니다.
:
: 수고하세요.