比如
我希望能够将'TfrmMain'转换成TfrmMain,比如
ActiveForm as 函数('TfrmMain')

解决方案 »

  1.   

    function GetClass(const ClassName: string): TPersistentClass;
    procedure TForm1.BitBtn1Click(Sender: TObject);begin
       { make sure the classes are registered so that GetClass will work -- }
       { Usually, this goes in the initialization section where it is only executed once }
      RegisterClasses([TIcon, TBitmap, TJPEGImage, TMetafile]);
      Edit1.Text := GraphicExtension(TGraphicClass(GetClass(Edit2.Text)));
     end;
      

  2.   

    好像不行呀
    (ActiveForm as GetClass('TfrmMain')).BtnAddClick(Sender);编译通不过,我TfrmMain类(是一个窗体类)中有一个BtnAddClick方法,现在提示我没有这个方法
      

  3.   

    RegisterClasses了没有呀?最好在你的TfrmMain所在单元的initialize 里面进行注册
      

  4.   

    getClass之后倒是可以将string变成class了,但是还是必须进行类型转换,呜呜
    比如TGraphicClass(GetClass(Edit2.Text)); 可不可以不进行类型转换呀?直接就是Edit2.text的类型呀?
      

  5.   

    可以类型转换。这个可以。GetClass之前需要RegisterClasses一下。不能单纯的GetClass。他把类引用放到了一个TList里面而已。你也可以自己写一个列表,用字符串提取类引用。
      

  6.   

    另外,GetClass得到的是类引用,不是对象引用。你如果用BtnAddClick之类的,你最好先建立一个对象吧。分清楚,类引用和对象引用这个概念再说……
      

  7.   

    to:reallike(接爱国人士的班,关心CSDN结贴率的人物。) 可能我的意思没有表达清楚
    ActiveForm是一个对象,定义成一个父类型,其实是一个子类的对象,现在需要根据一个字符串参数判断这个类是什么子类,然后进行强制的类型转换。
    我希望有一个便捷的方法将字符串参数转换成类。GetClass倒是可以将字符串转换成类,但是转换完之后好像是TObject类型吧,反正是还是需要类型转换 :( :( :( :(