Form构造函数和FormCreate哪个先执行?

bigfog 2010-08-04 01:10:34
本人一直以为构造函数总是先执行,今天写了个小程序时发现执行中出了问题,通过断点发现“FormCreate”要先于“Form"构造函数执行,真有些郁闷,一直以来的感觉都是错误的!我使用的是bcb2007,望各位高手发表自己的看发,交流交流!
...全文
341 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigfog 2010-08-05
  • 打赏
  • 举报
回复
结 贴了,参加的都有分,呵呵
我来看看CB 2010-08-05
  • 打赏
  • 举报
回复
好像不同版本BCB运行的顺序不一样
  • 打赏
  • 举报
回复
在Delphi1、2、3的VCL中,TCustomForm的构造函数在中间调用了OnCreate事件处理(如果有的话),析构函数调用了OnDestroy事件处理(如果有的话)。

从Delphi4的VCL开始,默认状态下,构造函数中不再调用OnCreate,析构函数中不再调用OnDestroy。可以使用OldCreateOrder来控制是否使用旧的方式。
isky2006 2010-08-05
  • 打赏
  • 举报
回复
顶,从来没在这个问题上仔细研究,学习了。
zzbinfo 2010-08-04
  • 打赏
  • 举报
回复
毛毛讲的不错
laowang2 2010-08-04
  • 打赏
  • 举报
回复
顶,学习学习。我一直以为是构造函数先执行。
天河落落 2010-08-04
  • 打赏
  • 举报
回复
习惯 FormCreate
GHOSTWY 2010-08-04
  • 打赏
  • 举报
回复
构造函数先进行
bigfog 2010-08-04
  • 打赏
  • 举报
回复
毛毛讲的有道理,把初始工作全部放在构造里,我还一直没注意过oldCreateOrder属性,学习了,呵呵
Waiting4you 2010-08-04
  • 打赏
  • 举报
回复
关于Form的初始化,要么全部放在构造里做,要么全部放在OnCreate里做,不建议分在两块地方.
不知道BCB2007的情况是什么样的,就BCB6来说,TForm有一个oldCreateOrder属性,如果为false,则构造先于Create,为true则反之. 联机帮助则干脆建议把初始工作全部放在构造里做
bigfog 2010-08-04
  • 打赏
  • 举报
回复
你另外建个窗口,使用new来创建一下试一下
周药师 2010-08-04
  • 打赏
  • 举报
回复
构造函数
即:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
先执行

FormCreate后执行的

你可以在两个函数里分别添加
ShowMessage("构造")
ShowMessage("FormCreate")
来判断先后的顺序

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧