假设我有一个带有ImageList的数据模。我也有一个带有按钮的表单。如果我想连接按钮的ImageList属性,我会将DataModule添加到forms uses中,然后在按钮属性中的图像下拉中选择ImageList。
但是,我现在可以从表单使用列表中删除DataModule,而且事情似乎仍然很好。
此外,如果DataModule是在IDE中打开的,而不是在窗体使用列表中,我可以手动在按钮的图像属性中键入图像列表的名称,并且它似乎正确地在按钮上显示图像。
问题:如果我不小心从表单中删除控件引用的“使用列表”,会有什么有害影响吗?
我目前正在清理大型项目(使用cnPack和Icarus)中数百种表单的使用列表,我想知道我需要有多小心(或无情)。
发布于 2013-12-16 23:13:48
为了使IDE能够在设计时找到一个DataModule (对于未设置的属性),以下内容必须为真:
为了使IDE能够在设计时再次找到一个DataModule (对于已经设置的属性),以下内容必须是真的:
如果程序能够在运行时找到一个DataModule (对于已经设置的属性):
如果程序能够在运行时找到一个DataModule (对于未设置的属性):
因此,从理论上讲,如果满足了所有正确的条件,您的DataModule单元就可以从表单的uses子句中省略。但是,要对运行时链接有信心,我可以得出结论,在表单单元的子句中添加DataModule单元是不安全的,或者至少没有方便的转义。
(*)在具有许多表单和DataModules的大型项目中,不打开IDE中的每个DataModule是非常常见的,而且设置很容易丢失。依赖于DataModule名称的设计时绑定,可能会导致表单永远不会显示任何数据(在本例中为图像)。如果不检查每个表单的DataModule设置,这是一个很难预见的错误。
解决方案是在运行时手动设置引用DataModule组件的所有属性,最好是在overriden构造函数或OnCreate事件处理程序中。这还防止了多个DataModule实例的重复命名问题,就像this question处理的那样。
发布于 2013-12-16 21:16:30
组件属性(如图像)的链接与使用列表中的适当条目无关。魔法隐藏在流系统中(寻找xxxFixUpReferences)。只要编译器不抱怨,就可以安全地删除这些条目。
IDE仍有可能对此不满意。
https://stackoverflow.com/questions/20619708
复制相似问题