我的应用程序的“应用程序图标”是错误的。
我的应用程序在任务栏中显示的图标与经典的Delphi图标不同。而是显示我的一个VCL的图标。图标被“窃取”的特定VCL未在我的应用程序中使用,但使用了同一包中的其他VCL。
相关信息: - 如果我将我的应用程序拖放到桌面上,图标看起来没问题。 - 当我将光标放在Windows Commander上时,图标看起来没问题。 - 当我将其拖放到“按钮栏”中时,Windows Commander中的图标看起来不正常。结论:图标在运行时不会被意外更改(即使应用程序没有运行,问题仍然存在)。
我使用Delphi 7.我只是为了确保禁用了EurekaLog和FastMM,并重建了应用程序。问题仍然存在。我甚至没有丝毫为什么编译器插入错误的图标。 我真的需要一些提示。 感谢。
答案 0 :(得分:8)
IDE中配置的图标将插入项目的 RES 文件中,名称为 MAINICON 。如果 DPR 文件中有{$R *.RES}
行,则项目资源文件将由编译器链接到您的应用程序。
资源管理器为 EXE 文件显示的图标是应用程序中的第一个图标。图标或按字母顺序排序。如果资源管理器显示错误的图标,则可能是您已将其他图标链接到您的应用程序,其中一个图标的名称位于 MAINICON 之前。它可能有一个数字名称。 (我不知道Windows Commander如何决定显示什么图标。)
如果项目使用的某个组件或其他单元具有与$R
指令链接的资源文件,那么它将包含在您的项目中。您不必对图标进行任何特定引用,甚至在代码中的任何位置提及组件的类名。仅在已使用的单元中存在$R
指令就足以将整个资源文件链接在一起。编译器不会执行任何“智能链接”来删除未使用的资源,因为它无法检测资源使用情况在编译时。
常见问题是资源管理器显示错误的图标,但程序本身使用正确的图标。通过在 MAINICON 之后重命名“错误”图标来解决这个问题。但是你说你的程序表现相反:资源管理器(桌面)显示正确的图标,你的程序使用错误的图标,对吗?
一种可能性是 DPR 文件中的$R
指令丢失或错误。 Delphi可能正在链接旧版本的文件。尝试删除项目的 RES 文件。当IDE看到它丢失时,它将重新创建它。此时,重新配置项目选项中的图标。您可能还需要重置项目的版本号。
您还应该检查已编译程序中资源的布局。我不记得Delphi是否附带了适合该任务的资源查看器。您可以尝试PE Resource Explorer。需要考虑的事项:项目中所有图标的名称是什么?出现什么图标,名称为 MAINICON ?什么 RES 文件来自其他图标,以及哪个单元将其链接?
最后,关于术语的说明: VCL 是Visual Component Library,它是Delphi附带的一组组件。你不能拥有“一个”VCL。你安装到Tool Palette(nee Component Palette)并放在表单和数据模块上的东西是组件,而不是VCL。
答案 1 :(得分:5)
从 Delphi 的菜单栏中选择项目 - >选项
在项目选项中,选择应用
在那里,您会看到为您的应用选择了图标。
你可以在那里改变它。
答案 2 :(得分:1)
可执行文件可以嵌入不同大小的图标。
检查以确保您已为不同尺寸定义了图标。如果您没有定义所有尺寸,Delphi可能会随意拉一个。这可以解释为什么按钮栏看起来单向,而在桌面上它看起来是另一种。
答案 3 :(得分:1)
重命名.RES文件并强制重新编译对我来说很好。
有两种方法可以做到。
将项目图标重置为默认值:
确保使用新图标并使用最少的内存进行分配(因此,由于应用程序图标中先前的重复更改,因此不会为此处指定的图标分配其他未使用的图标):
希望你觉得这很有用。
答案 4 :(得分:0)
检查应用程序的语言ID和OS的默认语言。如果这些不匹配,那么您可能会遇到图标问题。
答案 5 :(得分:0)
你在多台机器上检查过这个吗? Windows因图标缓存问题而臭名昭着。