3

我的应用程序的“应用程序图标”是错误的。

我的应用程序在任务栏中显示的图标与经典的 Delphi 图标不同。而是显示我的 VCL 之一的图标。我的应用程序中没有使用“被盗”图标的特定 VCL,但使用了同一包中的其他 VCL。

相关信息: - 如果我将应用程序拖放到桌面上,图标看起来还可以。- 当我将光标放在图标上时,Windows Commander 中的图标看起来不错。- 当我将它拖放到“按钮栏”中时,该图标在 Windows Commander 中看起来不正常。结论:图标不是在运行时意外更改的(即使应用程序没有运行也有问题)。

我使用的是 Delphi 7。为了确定,我禁用了 EurekaLog 和 FastMM,并重建了应用程序。问题仍然存在。我什至不知道为什么编译器会插入错误的图标。我真的需要一些提示。谢谢。

4

6 回答 6

8

在 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。

于 2008-12-09T06:02:15.090 回答
5

Delphi的菜单栏中选择Project->Options

在项目选项中选择应用程序

在那里,您将看到为您的应用选择的图标。

你可以在那里改变它。

于 2008-12-09T00:49:00.917 回答
1

可执行文件可以嵌入不同大小的图标。

检查以确保您已为不同尺寸定义了图标。如果您没有定义所有尺寸,Delphi 可能会随机抽取一个。这可以解释为什么按钮栏看起来是一种方式,而在桌面上它看起来是另一种方式。

于 2008-12-09T00:45:25.243 回答
1

重命名 .RES 文件并强制重新编译对我来说很好。

有两种方法可以做到这一点。

将项目图标重置为默认值:

  1. 关闭德尔福。
  2. 在文件资源管理器中打开项目文件夹。
  3. 将文件扩展名从 .RES 文件重命名为 .RES.BAK (您可能需要在文件资源管理器的工具>文件夹选项>查看>高级设置>文件和文件夹部分中取消选中“隐藏已知文件类型的文件扩展名”内容。
  4. 在delphi中打开项目。
  5. 它将显示一条警告,说它没有找到 RES 文件并将重新创建它。

确保使用一个新图标并为其分配最少的内存(这样,由于应用程序图标的先前反复更改,没有其他未使用的图标被分配给您在此处指定的图标):

  1. 在delphi中打开项目。
  2. 打开项目选项(Ctrl + Shift + F11)。
  3. 转到应用程序选项卡。
  4. 单击加载图标。
  5. 选择所需的图标并单击打开,然后单击确定。
  6. 在文件资源管理器中打开项目文件夹。
  7. 将文件扩展名从 .RES 文件重命名为 .RES.BAK (您可能需要在文件资源管理器的工具>文件夹选项>查看>高级设置>文件和文件夹部分中取消选中“隐藏已知文件类型的文件扩展名”内容。
  8. 在 delphi 中,转到项目>编译所有项目。然后转到项目>构建所有项目。
  9. 当您退出 Delphi 时,它会询问您是否要保存对项目的更改。单击是。

希望您觉得这个有帮助。

于 2013-08-12T18:30:48.123 回答
0

Check the language id of your application and default language of OS. If these don't match then you can have a troubles with icons.

于 2008-12-09T06:53:47.047 回答
0

您是否在不止一台机器上检查过这个?Windows 因图标缓存问题而臭名昭著。

于 2008-12-09T12:39:34.397 回答