【问题标题】:Can I prevent XE8 from adding System.ImageList?我可以阻止 XE8 添加 System.ImageList 吗?
【发布时间】:2015-09-28 19:41:01
【问题描述】:

XE8 中的表单会自动获取添加的使用System.ImageList。就像在embarcadero site上说的:

System.ImageList 包含 FireMonkey 和 VCL 代码的共同点,这些代码实现了图像列表的最基本的与设备无关的功能。 System.ImageList 包含支持图像列表中图像之间的交互以及使用它们的组件(如控件、菜单项等)的代码。

但我的同事大多仍在使用 XE7。现在,他们需要在我提交后不断删除那些使用。当我删除它时,我的 XE8 会自动添加此用途。当然,我可以在与另一位编辑提交之前删除这些用途。但是当我可以阻止 XE8 添加这部分代码时,它会更有效率。或者 Firemonkey 和 VCL 会停止正常工作吗?

所以我的问题是:我可以阻止 XE8 在表单中添加 System.ImageList 吗?

【问题讨论】:

  • 最好写{$IF CompilerVersion >= 29}System.ImageList, {$IFEND}
  • 或者为系统创建一个单元别名,该别名仅在您的 XE7 项目中定义。尝试让您的开发团队使用不同的版本并不是一个好主意。
  • 或者让每个人都回到 XE7,直到你准备好集体迁移到 XE8。如果你继续你现在的样子,你只会在你们自己之间打乒乓球。
  • TLama 的回答 $IF CompilerVersion >= 29 应该是接受的答案恕我直言。出于各种原因(例如许可或开发人员的固执),并不总是能够使开发人员环境保持同步。

标签: delphi firemonkey vcl delphi-xe8


【解决方案1】:

此代码仅在 XE8 及更高版本中启用 System.ImageList

  uses
      System.Classes, 
      System.SysUtils, 
      {$IF CompilerVersion >= 29}System.ImageList,{$IFEND}
      VCL.Forms,
      VCL.Dialogs, 
      VCL.StdCtrls,
      VCL.Controls, 
      VCL.Buttons, 
      Vcl.ExtCtrls, 
      Vcl.ImgList, 
      Vcl.ComCtrls, 
      Vcl.ToolWin;

【讨论】:

  • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
【解决方案2】:

我可以阻止 XE8 将 System.ImageList 添加到我在表单中的使用中吗?

没有。 IDE 将尽一切可能做到这一点。您的选择包括:

  • 将单元包装在条件中,以便 XE7 编译器看不到它。
  • 创建一个名为System.ImageList 的伪空单元,将其列在.dpr 文件中,再次包装在一个条件中,以便它只能被XE7 编译器看到。
  • 为不同版本维护单独的 .dproj 文件。在 XE7 版本中添加一个将System.ImageList 映射到System 的单元别名。
  • 在使用文本编辑器或脚本提交之前删除单元。
  • 让您的团队在通用版本的 Delphi 上进行标准化。

我个人会推荐后一种选择。请记住,您可以愉快地并排安装多个 Delphi 版本,并在必要时为不同的项目使用不同的版本。这在维护程序的发布分支时是必不可少的。

如果您根本无法做到这一点,那么单位别名可能是侵入性最小的选项。我猜你没有 .dproj 文件处于修订控制之下,因为如果你这样做了,那么你将面临 XE7 修改 XE8 版本的类似问题,反之亦然。因此,如果 .dproj 文件不在版本控制范围内,那么只为 XE7 用户在本地进行修改应该很容易。但是像这样的技巧应该永远被视为一个临时的垫脚石,让你在你都使用同一个版本的 Delphi 之前让你浮出水面。

更一般地说,Embarcadero 目前非常频繁地发布新版本。升级需要时间。您必须安装,解决任何编译问题,在编译器下测试构建,并处理出现的任何缺陷。您不必每次升级。跳过一些很好。这样做会更有效率。在我的工作场所,我们从 XE3 迁移到 XE7,并且不打算使用 XE8。如果您确实进行了升级,请确保收益大于成本。

【讨论】:

  • 我通常把虚拟单元放在一个特殊的文件夹中,我直接将它添加到旧的 IDE 库路径中。这有助于保持 dpr 的清洁并从一开始就适用于所有项目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多