如何使用私有数据模块与全局实例



我有一个数据模块为我的框架,它使用一个全局实例。数据组件链接到dmData实例

上的数据源现在我想使用一个数据模块实例,它是一个帧私有的,因为我想有多个实例的表单,其中包含帧显示在同一时间。

我不知道如何做到这一点,无论是在代码中还是在设计中。

在框架中,我将数据模块创建为dmLocalData:= tdmData.Create(self),但在设计中,我没有链接dmLocalData的选项,只有链接到dmData的选项(所以我所有的数据控件都是空白的(除了那个有一个本地数据源的代码设置)

我的意思是,在代码中,我可以手动逐个遍历每个组件并更改数据源,但认为确实必须有更好的方法,对其进行维护将是相当可怕的。

有更好的方法吗?

实际上有一种方法可以避免为动态创建的数据模块手工连接控件。简而言之,重写数据模块的CreateNew构造函数,如下所示:

constructor TMainDM.CreateNew(AOwner: TComponent; Dummy: Integer);
begin
  Dummy := -1;
  inherited;
end;

这避免了数据模块的多个实例获得不同的名称,从而按预期解析引用。由于数据模块对框架是私有的,所以它们没有必要具有全局唯一的名称。

在这两篇文章中可以找到更长的和更详细的解释,它们使用了一个非常相似的任务作为例子:

调整DFM加载(update)

调整DFM加载

相关内容

  • 没有找到相关文章

最新更新