procedure TForm1.Button1Click(Sender: TObject);
var
str:String;
Test:TObject;
begin
if str='Tdit'then
begin
Test:=TEdit.Create(self);
end;
if str='TButton' then
begin
Test:=TButton.Create(Self);
end;
end;
想做到动态创建任意一个对象好象不太可能,不过如果事先知道共有哪些对象要被创建,你这样的要求是可以实现的
Type
TControlClass=class of TControl; //声明类引用类型
procedure tForm1.CreateControlObj(ControlClass:TControlClass);//创建控件过程
var
AControlObj:TControl;
begin
AControlObj:=ControlClass.Create(self);
AControlObj.Parant:=self;
AControlObj.Name:=AControlObj.ClassName;//以类名作为控件名
AControlObj.SetBounds(10,10,250,150);//设置控件边界
end;
button1的click过程
const
ContrlClassArray:array[0..2] of
TControlClass=(TMonthCalendar,TMemo,TColorBox);
begin
CreateControlObj(ContrlClassArray[0]); //0,1,2可随便填
end;
这个是刘艺的而向对象编程思想中的一个例子,我记不太清了,反正是这么个意思,你可以试试