Delphi-通用数据模块

Delphi-通用数据模块,delphi,generics,datamodule,Delphi,Generics,Datamodule,我正在尝试定义泛型datamodule,如下所示: TDM<T> = class(TDataModule) public function GetValue:T;virtual;abstract; end; TDM=class(TDataModule) 公众的 函数GetValue:T;事实上的摘要 结束; 但是当我这样做的时候,Delphi误解了datamodule,认为它是表单(在.dfm文件中添加了诸如客户端宽度、字体等表单属性)。 我只希望这个datamodule用于

我正在尝试定义泛型datamodule,如下所示:

TDM<T> = class(TDataModule)
public
  function GetValue:T;virtual;abstract;
end;
TDM=class(TDataModule)
公众的
函数GetValue:T;事实上的摘要
结束;
但是当我这样做的时候,Delphi误解了datamodule,认为它是表单(在.dfm文件中添加了诸如客户端宽度、字体等表单属性)。 我只希望这个datamodule用于继承,所以我尝试将它设置为不带.dfm文件的简单类,然后创建真正的datamodule(带.dfm文件),从中继承。 例如:

TDataModule2=class(TDM)
公众的
函数GetType:Integer;推翻
结束;
一切看起来都很好,但只是在我关闭和打开项目的那个一刻。在项目开始时,由于某种原因,Delphi再次将TDataModule2解释为表单(这会导致运行时出现异常)

我正在使用Delphi XE。
有什么办法使这成为可能吗?

我认为这是不可能的。表单设计器是一个非常愚蠢的东西。它甚至不支持事件的类型重写。。。TDM是一种输入类型,但只是一个模板。类型类似于TDM或TDM您最好创建自定义类并嵌入datamodule作为其内部对象在文本模式下检查您的.dfm文件,很可能您的datamodule被定义为继承的,更改为object,您应该很好…您是如何创建包含TDM的单元的?“新装置”或“新数据模块”?@uwerabe带“新装置”。我还尝试了“新数据模块”,但这样我甚至无法使TDM工作,它几乎立即被解释为表单。@我尝试了对象和继承,没有好的结果。
TDataModule2 = class(TDM<Integer>)
public
  function GetType:Integer;override;
end;