概括
有一段时间没有使用 Delphi,但是,确实开发了我的自定义可视控件(我工作的最后一个版本是 Delphi 6)。
处理包依赖项时有两个问题。一种是在 Delphi 环境中安装,使控件出现在组件面板上,另外还有组件编辑器和属性编辑器。
另一个是在将编译好的包分发到客户机器上时。
它还取决于您正在运行的 Delphi 上的哪个版本。
设计时间
开发自定义包时,有一个包选项选项卡,用于指示目标文件夹。
手册通常会告诉开发人员将这些文本框留空。这有时有效,有时无效。我明确地在各自的文本框中写下每个文件夹路径。
“ .dcp”文件有一个文本框路径,“. dcu”有一个文本框路径,依此类推。
如果您有可视控件和属性编辑器或组件编辑器之类的东西,最好将代码拆分为 2 个包(“运行时”和“设计时”)。
我通常将delphi(包)项目放在delphi安装文件夹之外。
运行
通常,快速的方法是将“*.bpl”“.dcp”文件放在 Windows (32)/system 文件夹,或类似的“DLL”windows 文件夹中。
Packages文件夹结构源码建议
管理包可能很困难。我不知道 Embarcadero 和较新版本的 Delphi 对安装过程的影响有多大。下图是如何组织源代码的示例。希望能帮助到你。
[-]--+--c:
.....|
.....+--[-]--+--software
.............|
.............+--[+]-----java
.............|
.............+--[+]-----php
.............|
.............+--[-]--+--delphi (not the delphi folder in program files)
.....................|
.....................+--[+]-----apps (source code for delphi programs)
.....................|
.....................+--[+]-----other
.....................|
.....................+--[-]--+--packages (all delphi packages source code here)
.............................|
.............................+--[+]-----lib (a single package for non visual controls, libraries)
.............................|
.............................+--[+]-----tools (package pair for non visual tcomponent descendants)
.............................|
.............................+--[+]-----json (example)
.............................|
.............................+--[+]-----xml (example)
.............................|
.............................+--[-]--+--mycontrols (folder custom visual controls)
.............................|.......|
.............................|.......+--[-]--+--delphi40 (folder for delphi40 version of "mycontrols")
.............................|.......|.......|
.............................|.......|.......+----------dsgvclctrls40.dpk (design-time package "mycontrols")
.............................|.......|.......|
.............................|.......|.......+----------runvclctrls40.dpk (run-time package "mycontrols")
.............................|.......|.......|
.............................|.......|.......+--[+]--+--demos (individual example for each "mycontrol")
.............................|.......|.......|
.............................|.......|.......+--[+]--+--design ("*.pas" component editors destination folder)
.............................|.......|.......|
.............................|.......|.......+--[+]--+--sources ("*.pas" source code destination folder)
.............................|.......|.......|
.............................|.......|.......+--[+]--+--bin ("*.dcu" destination folder)
.............................|.......|........
.............................|.......+--[+]--+--delphi50 (folder for delphi50 version of "mycontrols")
.............................|.......|........
.............................|.......+--[+]--+--delphi60 (folder for delphi60 version of "mycontrols")
.............................|.......|........
.............................|.......+--[+]--+--delphi70 (folder for delphi70 version of "mycontrols")
.............................|................
.............................+--[-]-----etc...
干杯。