8

有谁知道与泛型和 RTTI 一起使用的 TDataset 后代,以便我可以编写这样的代码,并在 GUI 中使用数据感知组件?:

...
ds:TDataset<TPerson>;
...

procedure DoStuff;
begin    
  ds:=TDataset<TPerson>.create;
  ds.add(TPerson.Create('A.','Hitler',77));
  ds.add(TPerson.Create('O.','Bin Laden',88));
 end; 

应该是可能的。fielddefs 可以通过 RTTI 创建,因为数据的确切类型是已知的。值也可以自动来回编组,因此您可以查看和编辑类或记录中的数据。

我讨厌编写大量无用的编组代码,而所需的信息已经可以通过 RTTI 获得。

或者也许有人曾经写过某种 TEnumerable <-> TDataset 适配器?

是否存在类似的东西,或者我应该开始写一个吗?

...

我能找到的最接近的东西是 Marco Cantu 的一个(优秀的!)示例,来自 Mastering Delphi 7,但代码本身并没有使用新的语言特性,如泛型、新的 RTTI 系统或属性,而且它没有不能与 Unicode delphi 一起使用。自 D7 以来,TDataset 也发生了变化。

4

5 回答 5

4

TMS Aurelius中包含的 TAureliusDataSet与此非常接近。

于 2012-03-02T13:56:46.937 回答
2

www.inovativa.com.br/public上查看来自InovativaEverClassy数据集。

于 2013-03-08T18:35:18.660 回答
1

来自荷兰的A-Dato Scheduling Technology的DotNet4Delphi对您有好处。

在此处输入图像描述

引号:

来自 Torry 的德尔福

将任何集合连接到您的数据感知控件

DotNet4Delphi 实现了许多 .Net 集合类,包括 List<> 和 Dictionary<> 等泛型类型。与 Delphi 对应的不同之处在于,我们的泛型集合还实现了非泛型接口(IList、IDictionary),允许您以多种方式访问​​您的集合。这为使用任何集合作为数据感知控件的数据源打开了大门,这正是(也包括在内的)TListDataset 组件所提供的。

它针对 Delphi XE 和 XE2。

这是一个开源计划,德尔福摇滚!!!

于 2012-04-09T11:03:04.520 回答
1

另一个是 Snap Object Dataset http://digilander.libero.it/snapobject/

于 2013-11-01T08:24:17.540 回答
1

我找到了更相关的资源,忍不住分享一下!如此相关,以至于我认为它应该在我的第一个答案中单独发布,而不是仅仅更新。


Delphi XE2-XE6的Dduce库使用TListDataSet<...>通用数据集组件,该组件可用于将通用列表公开为 TDataSet。

与通用数据集的实施最相关的单位是:

类层次结构:

TDataSet <= TCustomVirtualDataset <= TListDataset <= TListDataset<T>

是的,它继承了很多特性……我唯一的愿望是拥有一个可以使用较少要求的版本(Delphi XE,没有大多数其他的花里胡哨)。

外观和感觉:

在此处输入图像描述

于 2015-01-24T13:05:31.510 回答