|
C++ Builder创建组件探密(2) 祖先类已发布的属性,最好在此作确认。顺便指出方法不宜写在发布声明处, 属性同样可写成公有或私有,但是它们是无法在设计期访问的,私有属性仅在 内部使用不向用户提供。写组件应尽量多用属性,而少用方法。只有属性无法 完成的工作才由方法来完成。 发布事件: 1.普通事件:参数唯一仅有TObject *Sender,一般用TNotifyEvent(指针类型) 如:__property TNotifyEvent OnExit={read=FOnExit,write=FOnExit} ; 同属性一样需要私有数据来保存事件指针。TNotifyEvent FOnExit; 另外是事件处理代码。void __fastcall MyOnExit(System::TObject *Sender) 其实现代码中由 FOnExit(Sender)语句触发事件;(注意事件处理函数返值void) 2.特殊事件: 首先:需定义事件类型指针(类似于函数指针的定义) typedef void __fastcall (__closure *TKeyDownEvent)(System::TObject* Sender, Word &Key,TShiftState Shift); 其次:要有数据保存处。在private处声明:如 TKeyDownEvent FOnKeyDown ; 再次:有相应事件处理函数一般在protected处声明。如 protected: virtual void __fastcall MyOnKeyDown(System::TObject *Sender, WORD &Key, TShiftState Shift);代码中常有 FOnKeyDown(Sender,Key,Shift) 最后:设定连接(需要提供前三者:事件指针类型,数据存放处变量,事件处理函数)。 __property TKeyDownEvent OnKeyDown={read=FOnKeyDown,write=FOnKeyDown};
|