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