|
빌더의 이벤트는 그냥 프라퍼티입니다.
typedef void __fastcall ( __closure *TMyRxStringEvent)(TObject *Sender, 여기에 필요한 각종 인자들);
클래스 내부에선
private:
TMyRxStringEvent FOnRxString;
....
__published:
__property TMyRxStringEvent FOnRxString = {read = FOnRxString, write = FOnRxString};
....
이런식으로 하시면 새로운 프라퍼티가 추가됩니다.
실제 저 이벤트 콜은
if (FOnRxString)
FOnRxString(this, .................);
이렇게 해 주시면 되겠죠.
그럼 사용자가 OnRxString을 지정한 경우에만 이벤트가 호출됩니다.
함수 선언할 때 __closure는 빌더에서만 사용되는 특수한 키워드로 꼭 넣으셔야합니다. 왜 그런지 잘 모르실땐 도움말을 꼼꼼히 읽어보시고 왜 안되는지 곰곰히 고민해 보세요. 분명 한단계 업그레이드됩니다.
최상천 님이 쓰신 글 :
: 사용자 정의 컴포넌트 만들기... 휴!!! 이거 쉽지 않네요.
: 도스프로그램 하다가 윈도우 프로그램 시작할때 처럼 어렵네요.
: 개념이 없어서 그런지...
:
: CPort 컴포넌트 보면 OnRxChar 이라는 이벤트 프로퍼티가 있잖아요.
: CPort 컴포넌트를 상속받아서 이걸 내 맘대로 주물러서(Char문자를 통신으로 받아서 어쩌구 저쩌구...) OnRxString 이런 식으로 프로퍼티를 다시 만들고 싶은데
: 도대체 어떻게 해야 하는지...
: 컴포넌트 고수님들 좀 알려 주세요.
|