我想实例化一个类,但我只在字符串中有它的名字.有办法吗?
这是来自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;