我可以阻止XE8添加System.ImageList吗?

时间:2015-07-10 06:51:52

标签: delphi firemonkey vcl delphi-xe8

XE8中的表单会自动添加 System.ImageList 。就像在embarcadero site上说的那样:

  

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

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

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

2 个答案:

答案 0 :(得分:9)

  

我可以阻止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。如果您确实进行了升级,请确保收益超过成本。

答案 1 :(得分:0)

此代码仅在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;