如何根据一个字符串,如:’TFrom1’
通过一个方法返回一个类的实例,如:ReturnClsObj(ClsName:string):TForm;
关键问题是,现在不知道怎么样才能根据这个字符串,生成一个类,而这个类的名称就是上面的字符串啊~~
大家帮忙了啊!!!!!多谢

解决方案 »

  1.   

    你举的例子和你下面的描述是两回事啊1。根据你举的例子的回答:
    定义一个全局类例如 MyForms:TList;
    然后在某个unit最下面end.前面写上:
    initialization
    MyForms:=TList.Create;
    然后一个函数:
    function RegisterForm(Form:TForm);
    begin
     MyForms.Add(Form);
    end;
    function ReturnClsObj(ClsName:String):TForm;
    var i:integer;
    begin
     Result:=nil;
     for i:=0 to MyForms.Count -1 do
        if CompareText(TForm(MyForms[i]).Name,ClsName)=0 then
        begin
          Result:=TForm(MyForms[i]);
          exit;
        end; 
    end;
    你用之前先用RegisterForm注册某个窗体,例如 RegisterForm(Self);
    然后你就可以ReturnClsObj来得到该窗体的实例了2。根据你后面的定义“根据这个字符串,生成一个类”:
    type TFormClass=class of TForm;
    var myInstance:TObject;MyClass:TFormClass;
    begin
      MyClass:=GetClass('TForm');//得到参考类
      myInstance:=MyClass.Create(Application);//生成类
    end;