C++Builder 程序员博客
3 Aug
我是直接复制帮助里面的函数,听说是用FormClose的话,这个form须是以模态出现的,而我的工程里面是用“Application->CreateForm”创建的,但是我用FormCloseQuery()也不行啊,用FormDestroy()也是不行,到底要怎样响应form右上角的那个X按钮?
谢谢!!
谢谢楼上!
我有点不明白,点BCB帮助里的“OnClose example”给出的竟是FormClose(),这不是MFC,哪来那么多OnXxxx()?
我就是在Unit1.h的TForm1类里面加上了FormClose()的声明,然后在unit1.cpp里实现了它。有错吗?
那么所谓的OnClose事件从何而来?BCB里有这个概念?
你的FormClose()是怎样声明的?BCB可以自动生成,只要F11->点Events->双击OnClose:
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
Windows是通过消息来处理事件的,BCB只是将WM_CLOSE定义成函数罢了
VCL中组件的事件,是以On开头的,比如OnClose,OnCreate等等,在IDE中选中某个组件,对象游览器中选择Events就可以看到该组件的事件。每一个事件对应一个处理函数(当然多个控件的多个事件也可以使用同一个函数),双击某个事件右面的空处,IDE会自动生成一个函数框架(包括在Form类中的声明以及.cpp中一个空的函数定义),然后在相应的函数中填写代码即可。你可以手动的添加函数声明和定义,但是必须和组件的相应事件挂钩,否则是不会自动调用的。对于Form而言,FormClose只是IDE默认的OnClose事件的处理函数的名称。完全可以自己定义一个,如:
在.h文件中:
private: // User declarations void __fastcall MyFormClose(TObject *Sender, TCloseAction &Action);
在.cpp文件中:
void __fastcall TForm1::MyFormClose(TObject *Sender, TCloseAction &Action) { ShowMessage("自定义的FormClose事件"); }
然后,再和Form的OnClose事件挂钩:
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { OnClose = MyFormClose; }
谢谢!没想到回复的这么快!
我少了最后一步,事件挂钩。
TKS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
该回复于2008-08-02 12:36:14被版主删除
收藏
该回复于2008-08-03 13:19:11被版主删除
OnClose应该可以触发的
學習~~~~~~