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

时间:2011-08-02 23:01:40

标签: delphi view devexpress 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;

但是要为TMyGridDBTableView消费,你要么

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

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

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

    1. 由于不愿重建,我在几年前在IDE中删除了组件的安装,在每次小的更改后重新安装它们,即使我写了很多组件,我也用代码初始化它们
    2. 我仍然安装dev express组件,并通过UI操作它们。必须切换到所有视图的纯源代码即时化将导致数千行代码。
    3. 有没有办法保留我已经使用表单设计的TMyGridDBTableView,但是在运行时使用TMyGridDBTableView重载方法增强了它们?

1 个答案:

答案 0 :(得分:5)

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

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

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