敬请个路高手指点迷津,如何在C++Builder中定义事件,和如何触发该事件?

时间:2022-05-02 10:12:28
本人对于在C++Builder中定义事件一直迷惑不解,比如我自己建立了一个控件,并且自己添加了一个事件。
在应用着一个控件时,在本人自行定义的事件中写入代码,我又怎么能够知道该段代码何时可以被执行呢?
最好有一个简单明了的小例子!!!谢谢!!!

敬请不吝赐教!!!
先行谢礼了!!!

5 个解决方案

#1


关注!

#2


我也想知道...

#3


关键只要明白,BCB中,事件是函数指针,而且它也是属性.
比如做一个计数器.
...
...
private:
  int Fnumber;
  TNotifyEvent FAfterCountChange;
public:
  void Inc();
__published:
  __property TNotifyEvent AfterCountChange=
{read=FAfterCountChange,write=FAfterCountChange};

....
...
....

void TMyCounter::Inc()
{
Fount++;
if(AfterCountChange)AfterCountChange(this);//必须先判断后调用.
}

--------------------------------------
其中TNotifyEvent其实就是VCL自己定义的一个函数指针.
typedef void __fastcall (__closure *TNotifyEvent)(System::TObject* Sender);


#4


哦,上面Inc() 中第一句 Fount++ ;为  Fnumber++;

#5


如果自定义的事件是对应于响应Windows 的消息的,那就在该消息的处理事件中调用你的自定义事件的函数。例子在VCL 源中有很多,自己看一下。

#1


关注!

#2


我也想知道...

#3


关键只要明白,BCB中,事件是函数指针,而且它也是属性.
比如做一个计数器.
...
...
private:
  int Fnumber;
  TNotifyEvent FAfterCountChange;
public:
  void Inc();
__published:
  __property TNotifyEvent AfterCountChange=
{read=FAfterCountChange,write=FAfterCountChange};

....
...
....

void TMyCounter::Inc()
{
Fount++;
if(AfterCountChange)AfterCountChange(this);//必须先判断后调用.
}

--------------------------------------
其中TNotifyEvent其实就是VCL自己定义的一个函数指针.
typedef void __fastcall (__closure *TNotifyEvent)(System::TObject* Sender);


#4


哦,上面Inc() 中第一句 Fount++ ;为  Fnumber++;

#5


如果自定义的事件是对应于响应Windows 的消息的,那就在该消息的处理事件中调用你的自定义事件的函数。例子在VCL 源中有很多,自己看一下。