在 运行 时间向组件添加事件

add event to component in the run time

您好,知道如何在 运行 时间内向构造的按钮添加事件吗? 我了解如何在 运行 时间内构建组件,但添加事件是另一回事。有任何例子来解释它是如何工作的吗?

谢谢

VCL 事件只是指向特定对象的 class 方法的指针。您可以直接分配该指针,例如:

__fastcall TForm1::TForm1(TComponent *Owner)
    : TForm(Owner)
{
    TButton *btn = new TButton(this);
    btn->Parent = this;
    // set other properties as needed...

    btn->OnClick = &ButtonClicked;
    /*
    behind the scenes, this is actually doing the equivalent of this:

    TMethod m;
    m.Data = this; // the value of the method's hidden 'this' parameter
    m.Code = &TForm1::ButtonClicked; // the address of the method itself
    btn->OnClick = reinterpret_cast<TNotifyEvent&>(m);
    */
}

void __fastcall TForm1::ButtonClicked(TObject *Sender)
{
    // do something ...
}