我想从tcxgrid中生成一个新的组件,希望每次建立它时,缺省是生成 bandview,而不是原来的tableview,但是在     constructor create(AOwner:tcomponent);override; 
    begin 
      inherited create(aowner); 
      application.messagebox(pchar(inttostr(self.ViewCount)),'aaa'); 
    end; 中,访问不了view的,这个时候,viewcount还是0,好象在这个时候还没有创建的,是怎么回事呢? 谢谢

解决方案 »

  1.   

    查查代码看它是什么时候生成View的,重写一下
      

  2.   

    如果重写的话,是不是要把它原来的那个unit复制到自己的程序中,编译时,就用自己的这个unit优先编译?
    这样的话,如果以后tcxgrid升级了,是不是又要重新做这步工作?用重载行不行?
      

  3.   

    变通一下,在Loaded方法里写你需要执行的代码:
    type
      TcxGridEx = class(TcxGrid)
      protected
        procedure Loaded;override;//覆盖加载组件的方法   
      end;implementation
    procedure TcxGridEx.Loaded;
    begin
      inherited;
      application.messagebox(pchar(inttostr(self.ViewCount)),'aaa');  
    end;
      

  4.   

    声明一个 bandview,然后在重载CREATE的时候赋给CXGRID?