(BCB)为VCL组件增加事件和属性

   VCL中有很多事件和属性,但并不是对每个子类组件都公开,这当然是正确的,但有些
   时候却给我们带来了麻烦,比如想使用TRichEdit的OnDlbClick事件,找来找去却找不
   到,只好通过重载窗口过程或增加消息映射来实现,实际不需要这么麻烦,既然Borland
   已经实现好了却不给我们,那就动粗。

  例子一: 增加双击事件通用函数

bool  __fastcall SetDblClick(TControl  * Ctl, Classes::TNotifyEvent EventFun)
{
    
class  TMyControl :  public  TControl
    {
        __published:
        __property OnDblClick;

    };
    
if  (dynamic_cast < TControl  *> (Ctl)  !=  NULL)
    {
        ((TMyControl 
* )Ctl) -> OnDblClick  =  EventFun;
        
return   true ;
    }
    
return   false ;
}

用法:

void  __fastcall TForm1::MyDblClick(TObject  * Sender)
{
    ShowMessage(
" DblClick " );
}
void  __fastcall TForm1::Button1Click(TObject  * Sender)
{
    SetDblClick(RichEdit1,  MyDblClick);  
// 增加双击函数
    
// SetDblClick(RichEdit1,  NULL); // 取消双击函数

例子二:增加颜色属性

 

 

void  __fastcall TForm1::Button2Click(TObject  * Sender)
{
    
class  TMyControl :  public  TWinControl
    {
        __published:
        __property Color;

    };
    ((TMyControl 
* )PageControl1) -> Color  =  clBlue;

组件属性如果不支持,公开也没用,比如TButton的Color,应用时候要注意。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值