我想通过一个字符串来实例化一个类,有什么方法可以做到吗?
以下内容来自 Delphi 帮助文档(适用于 Delphi 2006,但至少也可适用于 Delphi 7):
语法 function 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;