gpt4 book ai didi

delphi - DLL 中新窗体的父级设置问题

转载 作者:行者123 更新时间:2023-12-01 23:55:21 26 4
gpt4 key购买 nike

请解释一下两者的区别:

ChildForm := TForm.CreateParented(AOwner)

ChildForm := TForm.CreateParentedControl(AOwner)

ChildForm := TForm.Create(AOwner);
ChildForm.ParentWindow := AOwner.Handle

这个示例可能很复杂且令人费解,我真的只是想概述一下人们何时使用不同类型的表单 Create 方法。

Delphi 7 帮助告诉我应该对非 VCL 控件或跨 DLL 使用 CreateParented(AOwner.Handle) 和 ParentWindow := AOwner.handle。直到昨天我才设置 Parent := AOwner ,我完全不知道为什么它停止工作。

(也许我只需要重新启动计算机)

最佳答案

我们有组件。它们是表单或数据模块上可见或不可见的项目。每个组件都可以有一个负责最终销毁的所有者。如果没有主人,则必须自行负责销毁。

我们有控件,它们是可见的组件。他们还有一个包含控件的父级。例如,面板是该面板上按钮的父级。

我们还有 WinControls,它们是链接到 Windows 对象的控件。它们还有父窗口的句柄。

所以:

  1. TMyControl.CreateParented构造函数 CreateParented(ParentWindow: HWnd);

    这用于创建一个控件,该控件的父窗口由句柄提供。它创建没有所有者的控件并将父窗口设置为 ParentWindow。

  2. TMyControl.CreateParentedControl类函数CreateParentedControl(ParentWindow: HWND): TWinControl;

    创建没有所有者的控件,将parentwindow设置为ParentWindow并返回它。

  3. TMyControl.Create(AOwner: TComponent)

    创建一个将所有者设置为 AOwner 的控件。

  4. TMyControl.ParentWindow := AOwner.Handle;

    将父窗口(句柄)设置为 AOwner 的句柄。

关于delphi - DLL 中新窗体的父级设置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/785872/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com