gpt4 book ai didi

delphi - 为什么运行时创建不在 Controls[] 中的 TControl 子级?

转载 作者:行者123 更新时间:2023-12-03 19:46:30 27 4
gpt4 key购买 nike

在 VCL 应用程序中,我需要访问所有 TControl TForm 的 child . child 被声明为私有(private) TControl变量并在运行时使用

我使用了以下代码:

unit MainForm;

interface
uses
Vcl.Controls, Vcl.Forms, Vcl.StdCtrls, Vcl.ExtCtrls, System.Classes;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);

private
myControl: tControl;
end;

implementation
procedure TForm1.FormCreate(Sender: TObject);
var
NumOfControls: integer;
begin

myControl:= tControl.Create(self);

NumOfControls:= ControlCount;

end;


但是 NumOfControls为零。

这是正常行为还是我遗漏了什么?
如果是,我如何访问在运行时创建的控件?

最佳答案

您正在设置 Self作为 业主 myControl而不是它的家长 .

如果您需要制作Self成为 myControl 的父级,你需要设置它的Parent属性(property):

myControl.Parent := Self;

业主 家长 是两个不同的东西。
基本上,所有者管理其拥有的组件的生命周期,而父组件管理与控件外观更相关的方面,请查看 this以获得完整的解释。

还要检查这些属性:
  • TComponent.Components
  • TComponent.ComponentCount
  • TWinControl.Controls
  • TWinControl.ControlCount
  • 关于delphi - 为什么运行时创建不在 Controls[] 中的 TControl 子级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56274267/

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