我有多个窗体,同继承于Tform
 Tform1=class(TForm)
 Tform2=class(TForm)
 Tform3class(TForm)
 Tform4class(TForm)
 .....能不能做一个函数,传递窗体的类名(如TForm1),通过类名创建这些窗体的实例?
 function CreateForm(...);

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      PackageModule: HModule;
      AClass: TPersistentClass;
    begin
      PackageModule := LoadPackage('Package1.bpl');
      if PackageModule <> 0 then
      begin
        AClass := GetClass('TForm2');    if AClass <> nil then
          with TComponentClass(AClass).Create(Application)
            as TCustomForm do
          begin
            ShowModal;
            Free;
          end;    UnloadPackage(PackageModule);
      end;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var
      PackageModule: HModule;
      AClass: TPersistentClass;
    begin
      PackageModule := LoadPackage('Package1.bpl');
      if PackageModule <> 0 then
      begin
        AClass := GetClass('TForm2');    if AClass <> nil then
          with TComponentClass(AClass).Create(Application)
            as TCustomForm do
          begin
            ShowModal;
            Free;
          end;    UnloadPackage(PackageModule);
      end;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var
      PackageModule: HModule;
      AClass: TPersistentClass;
    begin
      PackageModule := LoadPackage('Package1.bpl');
      if PackageModule <> 0 then
      begin
        AClass := GetClass('TForm2');    if AClass <> nil then
          with TComponentClass(AClass).Create(Application)
            as TCustomForm do
          begin
            ShowModal;
            Free;
          end;    UnloadPackage(PackageModule);
      end;
    end;
    http://community.borland.com/article/0,1410,27178,00.html