【发布时间】:2018-07-16 08:52:54
【问题描述】:
我需要在我的应用程序的所有形式中调用一个初始化例程,它是一个 Intraweb 应用程序,所以实际上我将使用OnIWAppFormCreate 而不是OnFormCreate,反正问题是一样的。
我想到了两种技巧:
使用 Visual Form Inheritance:在这种情况下,我创建了一个 BaseForm,我在其中实现了 FormCreate 事件并从中继承所有表单
我添加了一个全局过程,并从所有表单中调用它
这两种技术都让我可以编辑每个表单。
有没有办法避免这种情况?
实际上我需要做的是将相同的字符串添加到 TIWAppForm.ExtraHeader stringlist 属性中。
这是我需要添加到每个表单的代码:
ExtraHeader.Add('<link rel="stylesheet" type="text/css" href="/css/mycustomcss.css">');
不知何故,我想知道是否有一种方法可以用我不知道的技术只编码一次。
谢谢。
【问题讨论】:
-
您可以使用拦截器类,但是虽然这不会让您编辑所有表单,但它会让您编辑所有单元以将拦截器类单元添加到使用子句中。根据您的代码的确切结构,这可能是也可能不是问题。
-
谢谢,我不知道这一点,这肯定是我列表中的第三项,但正如你所说,它并不能让我免于编辑所有表单 不幸的是,应用程序很旧,我做到了当时不使用基本形式来继承,而我在所有最近的应用程序中都这样做,因为它很方便。
-
事件不是这样做的方法。您需要的是一个基本形式,所有形式都从该基本形式派生而来。然后覆盖该表单的构造函数并将公共代码放在那里。
-
我会选择基本表单方法,即使它需要触及所有表单,因为它可以在未来重复用于类似目的。
-
不可以hook T(Custom)Form.Create吗?