在 IDE 中配置的图标将插入到名为MANICON的项目的RES文件中。如果您的DPR文件中有该行,则项目资源文件会通过编译器链接到您的应用程序。{$R *.RES}
资源管理器为您的EXE文件显示的图标是您应用程序中的第一个图标。图标或按字母顺序排序。如果 Explorer 显示了错误的图标,那么很可能您已将其他图标链接到您的应用程序,并且其中一个图标的名称位于 MANICON之前。它可能有一个数字名称。(我不知道 Windows Commander 如何决定显示什么图标。)
如果您的项目使用的某些组件或其他单元具有使用指令链接到它的资源文件$R
,那么它将包含在您的项目中。您不必对图标进行任何特定引用,甚至不必在代码中的任何位置提及组件的类名。仅在已用单元中存在$R
指令就足以链接整个资源文件。编译器不会执行任何“智能链接”来删除未使用的资源,因为它无法在编译时检测资源使用情况。
常见的问题是资源管理器显示错误的图标,但程序本身使用正确的图标。通过将“错误”图标重命名为MAINICON之后,可以解决此问题。但是您说您的程序的行为方式相反:资源管理器(桌面)显示正确的图标,而您的程序使用了错误的图标,对吗?
一种可能性是您的DPR$R
文件中的指令丢失或错误。Delphi 可能正在链接该文件的旧版本。尝试删除项目的RES文件。当 IDE 发现它丢失时,它会重新创建它。此时,重新配置项目选项中的图标。您可能还必须重置项目的版本号。
您还应该检查已编译程序中资源的布局。我不记得 Delphi 是否带有适合该任务的资源查看器。你可以试试PE 资源浏览器。需要考虑的事项:项目中所有图标的名称是什么?名称为MANICON的图标是什么?其他图标来自哪个RES文件,以及链接它的单位是什么?
最后,关于术语的说明:VCL是 Visual Component Library,它是 Delphi 附带的一组组件。你不能有“一个”VCL。您安装到 Tool Palette(nee Component Palette)并放在表单和数据模块上的东西是组件,而不是 VCL。