(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、付费专栏及课程。

余额充值