如果定义了一个
FTest: TWincontrol;然后FTest:= XXX;(XXX是TEdit,TStringGrid,TListBox等等)
我可以从FTest.ClassName,FTest.Name得到一些XXX的信息。
那么如果和强制把FTest转化成XXX的类型呢?
我想到的办法是用Case一个一个比较,比较ClassName是TEdit的话就用TEdit(FTest),但是这样太死了,比较没有限,请问还有其他办法吗?

解决方案 »

  1.   

    FTest.ClassType就是它真实的类。————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  2.   

    是啊,我也很想知道这个问题。按说我知道它的真实的类(FTest.ClassType),我就应该能自己进行转换啊?有没有转换的方法?例如(FTest.ClassType)(FTest)  --->(tEdit)(FTest)这样写当然不对,就是仿若这个意思的有没有实现方法???
      

  3.   

    还有另外一种方法:
      if FTest is TEdit then  //判断是否是tedit类型的对象
      

  4.   

    sender as Tedit 也可以判断是否eidt类;但是这样好像跟ftest又没了关系;^_^;
      

  5.   

    先用 FTest.ClassType 得到 真正 class名;
    然後用 FindClass or FindComponet 之類找到 class;
      

  6.   

    恐怕没别的好办法,不仅delphi不行,c++也不行,因为你是要引用具体类对象的属性或者方法,只能显式转换,如果只是要建立某个类的实例,使用FindClass或者ClassType可以。