自定义组件 - 如何管理?

时间:2010-02-28 21:24:57

标签: delphi components packages

我制作了一些程序,我在网页上以免费软件的形式发布。其中一个程序使用TSpinEdit进行一些数字输入。它工作得很好,所以我没有任何理由使用其他任何东西。

然而,昨天,一位用户告诉我他不喜欢按钮有多小。我真的不同意,因为,好吧,他们是。不幸的是,使按钮更大的唯一方法是使控件更大,而且看起来真的不好看。相反,我决定更改组件,使按钮彼此相邻,而不是彼此重叠。

现在,Delphi不允许我直接在DFM中包含这个新组件,因为它当前没有安装 - 它只是一个添加到项目中的文件。显然,改变这一点会很好 - 不仅因为它让我保留DFM中的控件,而且因为它让我更容易重用更改的组件 - 所以我将不得不制作一个包并添加它到那里那很好,我可以做到。

但这让我想到了一个问题:我应该如何管理这个包?

在向同一个软件包添加任何其他组件时是否存在任何问题,或者我是否更好地制作多个软件包并将它们分成逻辑组?

我当然使用版本控制,因此在我的桌面和笔记本电脑之间传播组件代码的更改不是问题 - 但每次我做出更改时,我是否需要在每个工作站上手动重建软件包,或者是有一个我应该使用的技巧吗?

4 个答案:

答案 0 :(得分:2)

我有一些“我的”组件,这些组件分组在单个包中。在包选项中设置“根据需要重建”。我相信它有一个技巧,至少在我的情况下(我正在我的家用PC和我的笔记本上使用SVN开发应用程序) - 它在项目编译期间重新编译包,但它是运行时一个(共享包;用于应用程序和它的插件)。我不确定设计时间怎么样,我担心你每次更换东西都要手动重新安装......

或者,如果使用相同的delphi versio,为什么不将二进制文件(.bpl,.dcp)放在共享(版本化)文件夹中?

答案 1 :(得分:2)

  

我该如何管理这个包?

您可以向软件包添加任何组件,安装软件包会将所有这些自定义组件安装到Delphi IDE中。

包可以是运行时,设计时或两者。运行时包没有IDE交互,也不会安装在IDE中。运行时包提供运行时其他包使用的例程和类。设计时包是与IDE交互的包。

通常您使用仅限设计时的软件包来安装IDE专家或属性编辑器。实际上只是与IDE交互的任何东西,与编译文件无关。

运行时和设计时的包都是您经常添加组件并将它们安装到IDE中的包。这些包与IDE交互,但也会编译到生成的文件中。

因此,如果有一些支持例程和类将由一组组件使用,则可以将它们放在运行时包中,并将该包用作其他包的必需包。

如果您有一些自定义IDE的代码,或者向IDE添加了一些功能,请将它们放在仅限设计时的软件包中。

如果您的组件将在已编译的应用程序中使用,那么您可以将它们放在运行时和设计时包中。

  

我当然使用版本控制   传播对组件代码的更改   我的桌面和笔记本电脑之间没有   问题 - 但我需要重建吗?   手动打包每个包   每次我做一个工作站   改变,或者我应该有一个技巧   正在使用?

如果您在笔记本电脑和PC中使用相同版本的Delphi,则在更改源代码后,您必须至少重建一次包以为您的软件包创建已编译的BPL文件。编译完BPL文件后,您可以将其复制到另一台机器(存储到BPL文件的文件夹中。默认情况下,在Delphi 2010中,它是C:\ Users \ Public \ Documents \ RAD Studio \ 7.0 \ Bpl) ,将DCU文件复制到该计算机,并在该计算机上运行Delphi IDE。 Delphi IDE将自动为您加载新构建的BPL文件。 简而言之,如果您的所有机器都使用相同版本的Delphi编译器,那么您可以编译一次包,并在其他机器中使用已编译的包而无需重新构建包。

答案 2 :(得分:0)

我们有许多不同的应用程序,它们使用稍微不同的组件集构建。

我们创建了一个项目组,其中包括应用程序使用的主应用程序和所有组件(除标准Delphi之外)。我们在应用程序文件夹下有一个文件夹,用于存储所有组件的源代码。组件文件夹通常在源控制系统中共享以避免重复,但如果需要可以分支。

我们总是创建快捷方式来启动为我们正在处理的特定应用程序配置的Delphi(使用-r命令行标志)。

所有这些意味着我们可以创建一个包含发布时组件的发布分支,并且我们可以运行多个Delphi实例,每个实例都配置为使用正在处理的应用程序版本的正确组件。

如果采用这种方法,则必须为每个Delphi实例创建单独的BPL / DCP输出目录,并确保从搜索路径中删除默认的BPL目录。

答案 3 :(得分:0)

一个软件包cs多个软件包:归结为您如何分发软件。拥有多个组件的多个包允许您更好地控制需要分发的内容(以源代码或运行时包的形式)。作为开发人员,拥有一个更大的软件包对您来说更容易:每当您进行更改时,只需要重建一个大包。

对于我的组件,我选择使用多个包;我现在后悔自己的决定,但改变已经太晚了。当我需要设置一个新工作站时,我需要弄清楚需要包含哪些包以及需要编译它们的顺序。如果我只使用一个大包我只是从版本控制(我使用JEDI)和BUILD中取出包,就是这样。大包对我来说很好,因为我不分发源文件而且我不分发运行时包。