是否可以包含基于组件属性的文件(链接)?

德尔福2007/2009奇怪的问题在这里:

基于设计时定义的组件属性,有可能在链接中包含文件或将它们保留下来?

示例:如果我将SomeProperty设置为true,那么在编译时,单元SomeUnit将被包含到我的项目中。 否则它不会被包括在内。

我对这个问题的第二种解决方法是部署第二个组件,当它放在表单中时(或不在)将包含使用子句中的单元。 但如果可以用一个物业来完成,那会更好。

我想避免通过IFDEF进行条件编译,因为这会在每次构建项目时强制构建组件。 或不?

我试图实现在项目中包含一些单元的简单方法,然后这些单元将提供对特定数据库的支持。 在连接组件中添加这些选项将非常简单:检查支持并完成。 取消选中,并在已编译的APP中获得更少的KB。

编辑:我会留在组件的方式,例如。 我知道IFDEF的方法和事情,但是这会迫使组件在每次构建项目时进行构建。 或不?

我试图实现在项目中包含一些单元的简单方法,然后这些单元将提供对特定数据库的支持。 在连接组件中添加这些选项将非常简单:检查支持并完成。 取消选中,并在已编译的APP中获得更少的KB。


没有。

你想要解决什么问题?

您可以添加一个后期编译步骤,可以根据组件属性选择性地包含一些资源 - 但您必须执行一些编码才能实现此功能。


您可以使用{$ IFDEF youridentifier}可选代码{$ ENDIF}方法有条件地将数据编译到您的应用程序中,然后启用它,直接转到您的项目选项并将标识符输入到相应的选项字段中。 另一种方法是将以下内容添加到单元的顶部(或包含文件中):

{$ DEFINE youridentifier}

这将迫使你的标识。 要禁用,只需在$:之前放置一段时间即可

{。$ DEFINE youridentifier}

使用这些技术很容易有条件地引入代码或在每次编译时替换代码。


编写一个IDE加载项。 处理“编译前”通知并检查项目中的任何表单或数据模块是否包含您感兴趣类型的组件,然后检查其属性。 根据您在那里找到的内容,您可以尝试修改单位的内容以使用您选择的其他单位。 这听起来不容易,但看起来可能。

你的第二个想法非常简单。 例如,这正是TXPManifest组件所做的。 请注意,从表单中删除这样的组件不会“不使用”关联的单元。

为有条件地添加对不同数据库的支持,您可以考虑使用运行时包。 (这就是IDE如何设法支持许多不同类型的组件。)将每个数据库的自定义代码放入不同的包中。 然后,您支持的数据库就是运行时可用的软件包。 无需编译时或设计时配置。 但是,这方面的障碍是管理哪些软件包可用,并确定哪些软件包是提供数据库支持的软件包。

链接地址: http://www.djcxy.com/p/67667.html

上一篇: Is possible to include files (linking) based on a component property?

下一篇: Text not displayed when mouse is rolled over JLabel