我的自定义组件应该来自TDataModule吗?

时间:2012-08-10 20:49:10

标签: delphi delphi-xe

我想构建一个管理大量操作并触发多个事件的自定义组件。我需要管理数据库连接和其他几个设计时组件。 (TQuery,TTable等)我想使用IDE界面设置其中的一些对象。

思路:

  1. 以相同的方式从DataModule继承是否给我一个放置的位置 在设计组件时这些组件? (我怀疑不是, 但有没有办法让我的CustomComponent表现为DataModule 在设计时,但不是在使用时?)
  2. 我的自定义组件应该只是从TComponent下降,但包含一个 TDataModule对象并添加我需要的组件吗?
  3. 我应该装袋这个概念,只是手动创建我需要的组件吗?
  4. 你的解决方案会让你比我聪明。

2 个答案:

答案 0 :(得分:3)

我建议您忘记尝试直观地设计组件。它是一个非可视组件,因此只需从TComponent派生它,并根据需要创建/管理数据库组件。根本不需要使用TDataModule。这应保留给最终用户在他们自己的项目中使用,而不是组件作者在他们的非可视组件中使用。

答案 1 :(得分:2)

不,原因很简单:Delphi XE中的IDE中存在一个错误,导致表单设计者将从TDataModule继承的类视为从TForm继承而来。这意味着一堆与TForm相关的属性将被写入您的DFM,这将在运行时尝试加载数据模块时最终引发异常。

如果不是这个错误,那将是一个好主意。