Delphi 如何子类化TcxGridDBTableView并使用它,而不会丢失GUI设置并将其作为组件安装?
使用dev express可以很容易地扩展Quantum网格视图,如中所述 您只需声明并覆盖所需的方法:Delphi 如何子类化TcxGridDBTableView并使用它,而不会丢失GUI设置并将其作为组件安装?,delphi,view,devexpress,subclass,delphi-xe,Delphi,View,Devexpress,Subclass,Delphi Xe,使用dev express可以很容易地扩展Quantum网格视图,如中所述 您只需声明并覆盖所需的方法: TMyGridDBTableView = class(TcxGridDBTableView) protected function GetViewInfoClass: TcxCustomGridViewInfoClass; override; end; 但是为了消费TMyGridBTableView,您也可以 必须使用RegisterComponent()将其作为组件包安装 或者从这
TMyGridDBTableView = class(TcxGridDBTableView)
protected
function GetViewInfoClass: TcxCustomGridViewInfoClass; override;
end;
但是为了消费TMyGridBTableView,您也可以
是否有一种方法可以保留我已经设计好的表单tmygridbtableview,但在运行时使用tmygridbtableview重载方法对其进行增强?在IDE中安装自己的组件是经过尝试和测试的。全球有成千上万的开发人员这样做。我也这么做。它很好用。事实上,您自己也知道这一点,因为您使用devexpress组件就可以做到这一点 但是,如果您坚决反对在IDE中注册自己的组件,则可以按照Sertac的建议使用。只要您不需要发布任何新属性,这种方法就可以工作,我相信在您描述的情况下就是这样
在IDE中注册组件的问题可能实际上是代码中的错误。这并不意味着批评,为设计时行为编码是相当具有挑战性的。由于您不需要发布新属性,而且所讨论的组件是第三方组件,因此插入器或类似的方法似乎是相当合理的。可能是@sertac modestry的副本。如果您的所有表单都有一个公共基类,那么在我看来,reader组件类方法无疑更好。如果您使用TForm作为定位点,则imterposer可能会更容易。使用TForm作为定位点,则imterposer可能会更容易。感谢您回答我的问题“为什么您排除了对上述问题的回答”。)在我的例子中,Interposer更合适,因为我必须拦截至少4个conrequisive调用的类。我也尝试过TVirtualMethodInterceptor,但它似乎只对TComponent实例有效,而不是任何类。