9

我们有一个修改过的 menus.pas。

uses ...,Controls,...;

编译器引发了一个致命错误:

[DCC 致命错误] Menus.pas(*): F2051 Unit Controls 使用不同版本的 Menus.TPopupMenu 编译

试过:

删除了项目中的所有 dcu。

建造

构建所有

尝试将文件添加到库路径中,这会导致添加 db 文件夹(也来自 vcl),然后添加到

[DCC 错误] jpeg.pas(872): E2065 Unsatisfied forward or external declaration: 'jpeg_save_markers'

这是一条死胡同。

删除了controls.dcu(全部3个)并且delphi不知道自动重新编译它们,而是报告controls.dcu丢失。

4

2 回答 2

14

以下是我如何处理对 VCL 源文件的修改:

  • 在您的项目结构中制作该文件的副本。将文件添加到您的项目中,或者确保搜索路径找到您修改过的文件。
  • 进行修改,但仅限于实施部分。如果您使用任何其他本身使用您正在修改的单位的单位,则您无法修改界面部分。
  • 在修改后的源文件顶部显式设置编译器选项。使用默认的 Delphi 选项,如在默认 vanilla 项目中按 CTRL+OO 找到的。

我猜最后两个要点之一就是让你绊倒的原因。

于 2012-05-06T15:44:55.837 回答
1

在 Delphi XE7(及以下)中,主题和样式完全无法使用。

所以,我修补了文件(Delphi XE7\source\vcl\Vcl.Themes.pas),将它添加到项目文件中,编译它并得到一个 DCU。我用新的 DCU(Delphi XE7\lib\win32\release\Vcl.Themes.dcu - 与“调试”文件夹相同)替换了旧的 DCU。现在一切都很顺利。我什至不必将 PAS 文件链接到我的项目。

于 2019-07-09T20:25:27.580 回答