function CreatForm(FormClass:string;FormName:stgring:boolean;
begin
if FormClass = 'TForm1' then
begin
With TForm1.create(self) do
begin
Name:= FormName;
Parent:=self;
......
end;
end
else if FormClass = 'TForm2' then
begin
With TForm2.create(self) do
begin
Name:= FormName;
Parent:=self;
......
end;
end
else
begin
showmessage('无效的类型');
result:=false;
end;
result;=true;
end
凑合着看吧,就是这个意思
如:
var
formClass: TPersistentClass;
fm: TForm;
begin
formClass := GetClass('TForm1');
if formClass <> nil then
begin
fm := TFormClass(formClass).Create(Application);
fm.Show;
end;
end;
我要的效果是用一段话接能循环创建所有form
比如:
Function CreateFrm();
var
MyForm:=TForm;
begin
//query是Tadoquery;里面取的是提前存储的窗体类
Query.first;
while not query.eof do
begin
MyForm:=TForm(TComponentClass(FindCalss(query.fieldbyname('FormClass')))).create(application);
MyForm.Align:=alClient;
MyForm.parent:=Panel1;
MyForm.show;
query.next;
end;
end;
这段代码其实已经可以实现了创建窗体的功能,但是由于窗体是被创建到了panel上。出现了问题:假如:form1创建了没有关闭,再创建form2覆盖了form1,这个时候如果我再创建form1的时候则会再panel上出现了2个form1,连续几次会出现更多。。如何才能在动态创建一个窗体的时候先判断它是否存在。当然如果是静态的就简单多了,但是如果这样动态创建的话.....