假设我有一个带有ImageList的数据模块.我还有一个带按钮的表格.如果我想挂钩按钮的ImageList属性,我会将DataModule添加到窗体使用,然后在按钮属性的Image下拉列表中选择ImageList.
但是,我现在可以从Forms使用列表中删除DataModule,但事情似乎仍然正常.
此外,如果DataModule在IDE中打开而不是在窗体使用列表中打开,我可以手动键入按钮的images属性,图像列表的名称,它似乎正确显示按钮上的图像.
问题:如果我不小心从控件引用的表单使用列表中删除了某些内容,是否会产生任何不利影响?
我目前正在清理大型项目中的数百个表单的使用列表(使用cnPack和Icarus),我想知道我需要多么小心(或无情).
要使IDE能够在设计时找到DataModule(对于未设置的属性),必须满足以下条件:
要使IDE能够在设计时再次找到DataModule(对于已设置的属性),必须满足以下条件:
对于能够在运行时找到DataModule(对于已设置的属性)的程序:
对于能够在运行时找到DataModule(对于未设置的属性)的程序:
因此,理论上,如果满足所有正确的条件,则可以从Form的uses子句中省略DataModule单元.但是为了对运行时链接有信心,我会得出结论,将DataModule单元添加到Form单元的uses子句中没有安全或至少没有方便的逃避.
(*)在具有许多Forms和DataModule的大型项目中,很常见的是不打开IDE中的每个DataModule,并且设置很容易丢失.依赖于DataModule名称的设计时绑定,可能会导致您的表单永远不会显示任何数据(或在这种情况下为图像).这是一个很难预见的错误,而无需检查每个Form的DataModule设置.
解决方案是在运行时手动设置所有引用DataModule组件的属性,最好是在重写构造函数或OnCreate事件处理程序中.这也可以防止多个DataModule实例的重复命名问题,正如此问题所述.