mgh*_*hie 11
回答评论以提供使用框架的原因:
我认为框架是GUI的构建块,现有组件的设计时间组合到更高级的组件.在Delphi 5之前,人们会使用TCustomPanel具有子控件的后代并将其注册为新组件,准备将其放到表单上.框架允许同样的事情,减少麻烦.
它们使您可以专注于开发所需的功能,仅此而已.完成后,您可以将它们嵌入到选项卡控件页,模态或无模式对话框,MDI子框架和标准框架中.您甚至可以将其中的几个添加到一个表单中 - 这可能与嵌入表单无关.关键是,为了获得最大的可重用性,通常需要分层方法,并且框架有助于实现这一点.
框架适合从行进中嵌入.表单必须适应不显示标题栏和边框,通常会覆盖CreateParams()并相应地调整窗口样式.检查器中有很多表单属性,对嵌入表单没有意义.恕我直言,应该使用最基本和最通用的实体.表单不仅仅是用于嵌入的控件容器.
OTOH我不知道嵌入一个表单不会有嵌入框架的任何缺点.
编辑:
关于类似OnCreate或OnShow没有框架的事件有评论.实际上,我会考虑帧的另一个优点,因为事件处理程序没有参数,因此很多东西必须在表单中进行硬编码.
考虑每用户设置的情况:OnCreate由于没有太多可用的信息,因此总是最终使用常量或INI文件部分的表单名称,这使得重用表单或创建非常困难甚至不可能几个例子.另一方面,使用框架方法LoadSettings是明显的方法,它可以携带必要的参数.这样控制就返回到它所属的位置,返回到嵌入式框架/表单的容器.只有在可以从外部调整行为时才可以使用可重用性.
对于不是组件且需要进行生命周期管理的包含对象,例如AfterConstruction和BeforeDestruction.