假设我有一个带有ImageList的数据模块。我也有一个带有按钮的表格。如果我想连接按钮的ImageList属性,则可以将DataModule添加到使用的表单中,然后在按钮属性的Image下拉列表中选择ImageList。

但是,我现在可以从Forms Uses列表中删除DataModule,并且看起来一切正常。

另外,如果DataModule是在IDE中打开的,而不是在表单使用列表中打开的,则可以手动在按钮的images属性中键入图像列表的名称,这似乎可以在按钮上正确显示图像。

问题:如果我不小心从控件引用的表单使用列表中删除了某些内容,将会有不利影响吗?

我目前正在清理大型项目(使用cnPack和Icarus)中数百种表单的使用列表,并且我想知道我需要多么小心(或无情)。

最佳答案

为了使IDE能够在设计时找到DataModule(对于一次未设置的属性),必须满足以下条件:

  • DataModule必须在IDE session 期间至少打开/创建一次(此后可能在 session 期间关闭),请参阅(*),
  • DataModule单元必须存在于Form单元的uses子句中。

  • 为了使IDE在设计时能够再次找到DataModule(针对已设置的属性),必须满足以下条件:
  • DataModule必须在IDE session 期间至少打开/创建一次(此后可能会在 session 期间关闭),
  • DataModule单元必须存在于Form单元ojis_strong或
  • 的uses子句中
  • 必须将DataModule单元添加到项目文件中。

  • 为了使程序能够在运行时查找DataModule(针对已设置的属性):
  • 必须创建数据模块,
  • DataModule单元必须存在于Form单元的uses子句中。

  • 为了使程序能够在运行时查找DataModule(针对未设置的属性):
  • DataModule单元必须存在于Form单元的uses子句中。

  • 因此,从理论上讲,如果满足所有正确的条件,则可以从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/

    10-11 22:43