ClassName:=mListItem.SubItems[1];
RegisterClass('T'+ClassName);  //这句出错: incompatible types:'TPersistentClass' and 'String'
with TFormClass(GetClass('T'+ClassName)).Create(Application) do
   show;请问这句怎么改!

解决方案 »

  1.   

    看看RegisterClass的原型:
    procedure RegisterClass(AClass: TPersistentClass);
    里面的参数是个类类型,不是字符串。
      

  2.   

    你要注册你的类,必须从TPersistent派生,然后调用RegisterClass注册,然后可以通过GetClass访问。
      

  3.   

    var
      vClass: TPersistentClass;
    ...
    ClassName:=mListItem.SubItems[1];
    vClass := FindClass('T'+ClassName)
    if vClass <> nil then
      RegisterClass(vClass);  
    with TFormClass(GetClass('T'+ClassName)).Create(Application) do
      show; 
      

  4.   

    SmallHand:
    我按你的代码写的,但在运行时,提示'Class TP0012 not found'
    这个窗体是有的呀!
      

  5.   

    你这个代码不对吧,VClass:=FindClass('T'+ClassName); 单步调试提示是这个出错,还没有注册怎么可能找到这个类呢?
      

  6.   

    http://www.cnblogs.com/Icebird/archive/2008/04/16/gcandrc.html
    GetClass与RegisterClass的应用一例 
      

  7.   

    你必须在某个地方先注册你的类,比如主窗体的OnCreate事件或单元的Initialization中,然后才可以通过GetClass访问。
      

  8.   

    taxi:我的对应的窗体的Initializtion中RegisterClass注册这个了类,现在可以显示窗体了,但是退出时提示:Stack overflow
      

  9.   

    在finalization反注册UnRegisterClass(Tyourclass)了吗?
      

  10.   

    有呀,有写:
    finalization 
    UnRegisterClass(TP0012)