【发布时间】:2012-03-02 23:23:04
【问题描述】:
编程环境:Delphi 6 及以上
我知道自 Delphi 6 以来,自定义组件必须具有单独的设计和运行时包。因此,组件的所有运行时功能都必须在一个单独的单元中,并单独打包到组件的设计时包中。
我的问题如下:我的组件的代码需要在运行时在窗体上创建时运行,另外还有一些代码需要在设计时运行,当组件放置在形式。我已经设法将运行时代码放入单独的运行时单元中,打包并成功部署。
但是,在单独的设计时模块单元中,当组件被放置到表单上时,如何在设计时引用和添加需要包含在组件的创建构造函数中的设计时代码?
【问题讨论】:
-
它们不必在单独的单元或包装中,您可以随时查看
if csDesigning in ComponentState then YouAreAtDesignTime。 -
TLama 是正确的。设计时代码的问题在于,某些 ToolsAPI 单元无法在不违反许可协议的情况下链接到运行时包(因此您显然不应该这样做)。只要您不使用这些单元,完全有可能在您自己的单元中包含您自己的设计时间代码。
-
您能否更具体地说明您想在构造函数中做什么?为什么它需要在构造函数中?
-
如果整个 VCL 可以在不错误地使用其组件中的设计时功能的情况下构建,那么您的也可以。绝对没有理由将 DesignIDE/DesignIntf 功能混合到您的运行时代码中;应该始终可以正确地将它们分开。
-
谢谢 NGLN。在设计时将组件拖放到表单上时,我将有关父表单的详细信息写入数据库。要访问此信息,需要不能包含在运行时接口中的 DesignIDE 例程,因为在编译包时,会出现 DesignIDE.dcu' not found。因此,需要一个单独的设计时构造函数。谢谢
标签: delphi components