大家能不能帮我看一下这个过程,要怎样修改好!
我只传个[窗体名]和[窗体类名](都是字符串类型)怎样的方法动态创建窗体比较好!大家能不能给你例子!procedure TForm1.MenuClickEvents(Sender: Tobject);
  function FindForm(FormName: string): TForm;
  var
    i: Integer;
  begin
    Result := nil;
    for i := 0 to MDIChildCount-1 do
      if MDIChildren[i].Name= FormName then
      begin
        Result := MDIChildren[i];
        Exit;
      end;
  end;
var
  Frm: TForm;
  Frs: TPersistentClass;
  pck: HModule;
  Cxm: string;
begin
  Cxm:= 'Form2';
  pck := LoadPackage('问题1');
  Frm := FindForm(Cxm);
  if Frm = nil then
  begin
    Frs := GetClass('F'+Cxm);    //问题2
    Frm := TForm(TComponentClass(Frs).Create(Application));  //问题3
    Frm.Show;
  end
end1、LoadPackage() 的参数应填写什么值,LoadPackage,是什么意思,为什么要LoadPackage;
2、不知道为什么Frs 取的是nil值
3、在创建窗体时会出错,不知为什么?大家帮帮我解决下这个问题,小弟我万分感谢!

解决方案 »

  1.   

    function createform(xxx,xxxx):TFROM;
    begin
      xxx:=xxxx.create(self);
      result:=xxx;
    end;
      

  2.   

    FindClass,GetClass,
    不过这些得先有注册,RegisterClass
      

  3.   

    lihao_ningxia(耗子) 你好!你上面说的XXX和XXXX都是字符串类型,虽说是反回TFORM,但肯定编译不过的啊!
      

  4.   

    linzhengqun(风。为菜鸟服务) ,你好!
    你说的FindClass,GetClass注册,该怎样注册啊!
      

  5.   

    为什么Frs取到的值是nil呢!我应怎样才能取到这个窗体所属的类呢!
      

  6.   

    var
      Frs: TPersistentClass;
    begin
      Frs := GetClass('这里该填什么啊!');
    end
      

  7.   

    var
      TheClass: TPersistentClass;
      MyForm: TForm;
    begin
      RegisterClasses([TForm2]);
      TheClass := GetCLass('TForm2');
      MyForm := TForm(TheClass.Create).Create(nil);
      MyForm.Show;
    end;