5,388
社区成员
发帖
与我相关
我的任务
分享
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TBaseClass=class of TBase;
TForm1 = class(TForm)
T1: TButton;
procedure FormCreate(Sender: TObject);
procedure T1Click(Sender: TObject);
private
{ Private declarations }
procedure CreateObjectByName( const ObjectName : string);
public
{ Public declarations }
end;
TBase = class(TPersistent)
public
procedure Load;virtual;
end;
TC1=class(TBase)
public
procedure Load;override;
end;
TC2=class(TBase)
public
procedure Load;override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterClass(TBase);
RegisterClass(TC1);
RegisterClass(TC2);
end;
{ TC2 }
procedure TC2.Load;
begin
inherited;
ShowMessage('TC2.Load');
end;
{ TBase }
procedure TBase.Load;
begin
ShowMessage('TBase.Load');
end;
{ TC1 }
procedure TC1.Load;
begin
inherited;
ShowMessage('TC1.Load');
end;
procedure TForm1.CreateObjectByName(
const ObjectName : string);
var
fc : TBaseClass;
f : TBase;
begin
fc := TBaseClass(FindClass(ObjectName));
f := fc.Create();
f.Load;
end;
procedure TForm1.T1Click(Sender: TObject);
begin
CreateObjectByName('TC2');
end;
end.