Мне нужно временно удалить события OnExit и OnEnter TFrame, поэтому я пытаюсь сделать следующее:
объявить FEnterHandler и FExit Handler:
private:
// ...
TControl *FParentControl;
(__fastcall *(__closure)(TObject*))(TObject*) FEnterHandler;
(__fastcall *(__closure)(TObject*))(TObject*) FExitHandler;
// ...
и я намеревался использовать их как напечатано здесь, но компиляция не удалась при объявлении.
__fastcall TProgressForm::TProgressForm(TComponent *O, TControl *PC)
: TForm(O), FMapProgressData()
{
FParentControl = PC;
if (FParentControl)
{
TFrame *frame = dynamic_cast<TFrame*>(FParentControl);
if (frame)
{
FEnterHandler = frame->OnEnter;
FExitHandler = frame->OnExit;
frame->OnEnter = 0;
frame->OnExit = 0;
}
FParentControl->Enabled = false;
}
}
//-------------------------------------------------------------------------
__fastcall TProgressForm::~TProgressForm()
{
if (FParentControl)
{
FParentControl->Enabled = true;
TFrame *frame = dynamic_cast<TFrame*>(FParentControl);
if (frame)
{
frame->OnEnter = FEnterHandler;
frame->OnExit = FExitHandler;
}
}
}
Что я делаю не так?