如何在不丢失我的GUI设置并将其作为组件安装的情况下继承TcxGridDBTableView并使用它?

Ive*_*aev 2 delphi devexpress view subclass delphi-xe

使用dev express可以很容易地扩展Quantum Grid Views,如中所述

http://devexpress.com/Support/Center/KB/p/A334.aspx?searchtext=viewinfo

你只需声明并覆盖你需要的方法:

TMyGridDBTableView = class(TcxGridDBTableView)
protected
  function GetViewInfoClass: TcxCustomGridViewInfoClass; override;
end;
Run Code Online (Sandbox Code Playgroud)

但是要为TMyGridDBTableView消磨你

  1. 必须使用RegisterComponent()将其安装为组件包
  2. 或者从这样的代码构建整个UI

    查看:= Grid.CreateView(TMyGridDBTableView)作为TMyGridDBTableView; View.OptionsView.ColumnAutoWidth:= True; View.OptionsView.NewItemRow:= True; View.DataController.DataSource:= DataSource1; View.DataController.CreateAllItems;

这两种方式对我都不好,因为:

  1. 由于不愿意重建,在几年前我在IDE中删除了组件的安装,在每次小的更改后重新安装它们,即使我写了很多组件,我也用代码初始化它们
  2. 我仍然安装dev express组件,并通过UI操作它们.必须切换到所有视图的纯源代码即时化将导致数千行代码.

有没有办法保留我已经使用表单设计的TMyGridDBTableView,但是在运行时使用TMyGridDBTableView重载方法增强了它们?

Dav*_*nan 5

尝试在IDE中安装您自己的组件.全球有数千名开发人员这样做.我也是这样做的.它工作正常.你真的知道这一点,因为你使用devexpress组件就是这么做的.

但是,如果您在IDE中注册自己的组件已经死定,则可以使用Sertac建议的插入器.只要您不需要发布任何新属性,我就相信这是您所描述的情况.

在IDE中注册组件时遇到的问题可能实际上是代码中的错误.这并不意味着批评,设计时间行为的编码是非常具有挑战性的.由于您不需要发布新属性,并且由于所讨论的组件是第三方组件,因此插入器或类似组件似乎是非常合理的方法.