gpt4 book ai didi

delphi - delphi 有没有办法通过名称实例化一个类?

转载 作者:行者123 更新时间:2023-12-03 14:39:30 25 4
gpt4 key购买 nike

我想实例化一个类,但我只有字符串中的名称。有办法吗?

最佳答案

这来自 Delphi 帮助(Delphi 2006,但至少也可从 Delphi 7 获得):

语法函数 GetClass(const AClassName: string): TPersistentClass;

描述调用 GetClass 从类名中获取类。此类可用作需要类的例程的参数。类必须先注册,然后 GetClass 才能找到它。加载表单时,会自动注册表单声明中引用的表单类和组件类(实例变量)。其他类可以通过调用 RegisterClass 或 RegisterClasses 来注册。

这里有一些示例代码。之所以如此工作,只是因为 TButton 是一个 TControl,因此类型转换是有效的。

procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterClasses([TButton, TForm]);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
CRef : TPersistentClass;
AControl : TControl;
begin
CRef := GetClass('TButton');
if CRef<>nil then
begin
AControl := TControl(TControlClass(CRef).Create(Self));
with AControl do
begin
Parent := Self;
Width := 50;
Height := 30;
end;
end;
end;

关于delphi - delphi 有没有办法通过名称实例化一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/701049/

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