我们为两种略有不同的机器版本制作了两个版本的软件。两台机器上使用的硬件完全不同,我们维护了两个项目,Project1 和 Project2。一些代码(.pas 和 .dfm,视情况而定)在两个项目之间共享,但大多数代码当前是 Project1 或 Project2 独有的。
Project2 最初是从 Project1 克隆的,以使新机器能够正常运行,但现在我正在重组代码,以便可以在两个项目之间使表单和单元通用,以减少开发工作量。条件定义,如 中{$IFDEF PROJ1}
,在需要时使用。
除了在 Project1 中但不在 Project2 中的一个 TCheckBox 之外,我们有一个在项目之间几乎相同的表单。Masking
让我们用单元文件 Masking.pas(和 Masking.dfm)来调用这个表单。
脚步:
- 将 .pas 和 .dfm 从 Project1 移到公共共享文件夹中
- 将 Masking.dfm 重命名为 MaskingProj1.dfm
- 将 Project2 中的 Masking.dfm 复制到公共共享文件夹并重命名为 MaskingProj2.dfm
- 手动编辑每个项目的项目 (.dpr) 文件以反映更改
在 Masking.pas 中,改为
{$R *.dfm}
:{$IFDEF PROJECT1} {$R MaskingProj1.dfm} {$ELSE} {$R MaskingProj2.dfm} {$ENDIF}
同样在 Masking.pas 中,使用
{$IFDEF PROJECT1}
条件定义来编译出 TCheckBox 控件和 Project2 的相关代码。
最后,重新打开两个项目并重新编译。嘿,快!有用。现在 Project1 使用 Masking.pas 和 MaskingProj1.dfm。Project2 使用 Masking.pas 和 MaskingProj2.dfm。
这一切似乎都工作正常......除了当我尝试在 IDE 中查看表单时,通过在表单和单元之间切换(F12),什么都没有显示。我可以手动编辑任何一个 .dfm 文件,并且更改会在重新编译后反映在应用程序中……但 IDE 不会显示表单。
我究竟做错了什么?是否可以{$R *.dfm}
根据条件定义以这种方式更改以使 .pas 文件使用不同的表单文件?