我们有一些覆盖 createwnd 的旧版 delphi 自定义组件。这些组件位于表单内的面板上。
当窗体和面板被实例化时,组件也被实例化,并且 createwnd 被调用一次。这是有道理的。
但是,如果我在运行时切换面板的父级,我惊讶地发现 createwnd 将再次被调用。
例如,在某些情况下,我可能会将 Panel1 的父容器更改为 Form2.panel2。基本上在运行时在 Form2 的面板内绘制 Panel1。
TForm1.buttonclick(..)
begin
..
Panel1.parent := Form2.panel2;
..
end;
当父级更改时,为什么要重新创建 Panel1 中的自定义组件?
Panel1 中的所有组件的行为是否相同,即使不是自定义的,例如,如果我在 Panel1 上也有一个 TButton,那么在切换父级时也会重新创建它吗?我不认为它会,这就是为什么我如此惊讶。
最后,如果这种行为不正确,我该如何做到这一点,以便在父容器更改时不会调用 createwnd。
谢谢!