我现在问题是这样的:有一个自定义类TUser, 里面有一个属性 UserMenu 是vcl控件 TXMLDocument。 我能把这个控件加到类中么。象这样:
  TUser = class
  private
    FsUserMenu: TXMLDocument;
  end我试了一下,发现调用的时候会出错。 加在自定义类中Vcl控件,和放到form、datamule中的有什么不同?

解决方案 »

  1.   

    可以啊
    不过tuser要写个构造函数,在构造函数里将FsUserMenu动态创建,创建后才能使用
    TUser   =   class 
      private 
        FsUserMenu:   TXMLDocument; 
      public
        constructor create;
        
      end ......constructor TUser.Create;
    begin
      FsUserMenu := TXMLDocument.Create(self);
    end;
      

  2.   

    感谢 supercc 。
    在构造函数中我已经将FsUserMenu 初始化了,但是只能用 TXMLDocument.Create(nil); 因为我这个类不是从TCompoment继承下来的。
    但在使用中FsUserMenu 中的很多属性不能用,一用就报错。我怀疑和构造函数有关系,但我又不想让TUser类继承自TDatamodule,应该怎么办呢 
      

  3.   

    TUser = class(TDatamodule)  
      

  4.   

    我主要是不想用TUser类继承自TDatamodule,否则我就直接用DataModule了。
    这个TUser类会有成千上万个实例,我觉得继承自TDatamodule会不会影响效率
      

  5.   

    哈哈,搞定了。是TXMLDocument自己的问题。实例化的时候不能用TXMLDocument.Create(nil);   而必须用NewXMLDocument。 否则XML解析器挂不上。