我想实例化一个类,但我只有字符串中的名称。有办法吗?
最佳答案
这来自 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/