请问若在基类窗体重载DblClick(void);会使派生类窗体从Object Inspector加入的FormDblClick(TObject *Sender)Event失效
请问若在基类窗体重载DblClick(void);会使派生类窗体从Object Inspector加入的FormDblClick(TObject *Sender)Event失效,该怎么解决呢?主要代码如下:
class TMyFormBase : public TForm
{
protected:
DYNAMIC void __fastcall DblClick(void);
};
void __fastcall TMyFormBase::DblClick(void)
{
MessageBox(NULL, L"TMyForm被双击!", L"提示",0);
}
/////////////以下是继承自TMyFormBase的TMyForm/////////////////
class TMyForm : public TMyFormBase
{
__published: // IDE-managed Components
void __fastcall FormDblClick(TObject *Sender);
};
void __fastcall TMyForm::FormDblClick(TObject *Sender)
{
MessageBox(NULL, L"我不会被执行!", L"提示",0);
}
///////////////////////////////////////////////////////////////
我的想法是,这种情况下若要在 TForm2 另外指定 FormDblClick 的实现,
就必须再重载一次 DblClick(void) 如下:
void __fastcall TMyForm::DblClick(void)
{
MessageBox(NULL, L"我先出现,TMyFormBase的MessageBox按下确定后出现。", L"提示",0);
TMyFormBase::DblClick();
}
///////////////////////////////////////////////////////////////
但是这样并不合理,我不一定晓得我的基类表单是否重载过 DblClick,
当我从 Object Inspector 加入 FormDblClick 事件后, 里面的代码没有执行,
只会让人觉得莫名其妙,是不是哪里不对?该怎么处理呢?谢谢
问题点数:50、回复次数:2Top
1 楼Waiting4you(毛毛)回复于 2006-03-10 20:03:22 得分 50
void __fastcall TMyFormBase::DblClick(void)
{
MessageBox(NULL, L"TMyForm被双击!", L"提示",0);
TForm::DblClick();//再加一句这个,因为你没有调用OnDblClick
}
Top
2 楼dkjfsoman(dkjfsoman)回复于 2006-03-10 20:51:46 得分 0
成了!谢谢Top




