gpt4 book ai didi

delphi - 使用 Delphi 2006 有条件地更改应用程序图标

转载 作者:行者123 更新时间:2023-12-03 15:01:15 26 4
gpt4 key购买 nike

我想生成两个不同版本的应用程序,并根据 DEFINE 使用不同的图标。我成功地根据定义包含了不同的资源文件,但我无法删除项目默认 .res 文件中的 MAINICON

我添加了一个资源 Version1.rc 文件,其中包含以下行:

MAINICON icon "resource\icons\Version1.ico"

但是如果我尝试使用 IDE 编译 MyProject,我总是会收到以下错误:

E2161 Duplicate resource: Type 14 (ICON GROUP), ID MAINICON; File C:\MyProject\Version1.RES resource kept; file C:\MyProject\MyProject.RES resource discarded.

我尝试使用资源编辑器编辑MyProject.res并删除了MAINICON,但delphi似乎自动重新创建了包含图标的文件。

最佳答案

感谢 David Heffernan 的评论,我找到了解决方案。我最终得到以下结果:

  • 在 IDE 中,我删除了项目选项下的“包含版本信息”,并删除了项目文件中的 {$R *.res}
  • 我删除了文件 MyProject.res
  • 我添加了一个文件 versioninfo.rc,其中包含我之前在 IDE 中提供的信息,如 here 中所述。 .
  • 我添加了文件 icon_version1.rcicon_version2.rc,如下所示:

    LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
    MAINICON icon "..\resources\icons\version1.ico"
  • 我向我的项目添加了一个文件 Resources.pas,如下所示:

    unit Resources;

    interface

    implementation

    {$IFDEF VERSION1}
    {$R ICON_VERSION1.RES} //from ICON_VERSION1.RC
    {$ELSE}
    {$R ICON_VERSION2.RES} //from ICON_VERSION2.RC
    {$ENDIF}

    {$R VERSIONINFO.RES} //from VERSIONINFO.RC

    end.
  • 我修改了现有脚本 compile_resources.bat 以编译其他资源文件。

现在,如果我定义 VERSION1,我的应用程序将具有图标 icon_version1.ico,否则为 icon_version2.ico。需要注意的是:如果版本信息(或图标)被修改,我必须运行 compile_resources.bat 来反射(reflect)更改。

关于delphi - 使用 Delphi 2006 有条件地更改应用程序图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32047381/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com