为了避免更复杂的解决方案,框架调用父窗体中的一些例程,以便窗体可以杀死帧...我想知道是否可以简单地将窗体设置为框架的父窗口,并让Delphi调用Frame.Free用户关闭应用程序时?
procedure TForm1.FormShow(Sender: TObject);
var
Frame2 : TFrame2;
begin
//Frame2 := TFrame2.Create(nil);
Frame2 := TFrame2.Create(Self);
Frame2.Align := alClient;
Frame2.Parent := Self;
Frame2.Visible := True;
end;
谢谢。
答案 0 :(得分:12)
实际上你让父母和老板感到困惑:
将所有者作为参数传递给构造函数,并将负责释放组件,父级是可视化包含控件的控件。
示例:
您有一个表单,该表单上的面板以及该面板上的标签: 表单通常是面板和标签的所有者。表单是面板的父级,面板是标签的父级。
关于你的问题:将包含框架的表单作为所有者传递是完全可以的。当表单被释放时,它也将释放框架。此外,您必须将父级设置为其他控件才能使框架可见。这当然也可以是形式,但这对释放框架没有任何影响。
答案 1 :(得分:1)
要清楚:
- 所有者负责拥有的组件的存在,并在其自身销毁时释放它们(它们是所有者的一部分,不能存在没有它。)
- 父级负责显示其子级(控件 - 没有父级,其可见属性无效),因此也会释放其控件摧毁自己,因为没有人能再展示它们了。