在表单上放置TMemo后,TMainMenu图标消失

时间:2014-01-24 10:14:33

标签: delphi icons

我有一个带图标的TMainMenu。一切都很好,直到我在表格上放置TMemo。当我运行我的程序时,图标消失了。发生了什么事,我怎么能解决这个问题?

enter image description here

enter image description here

我使用Delphi 2010作为IDE。

2 个答案:

答案 0 :(得分:3)

这个问题正如Sertac所描述的那样。备忘录文本的流式传输导致图标从菜单栏中丢失。

因此,最简单,最便捷的解决方案是确保备忘录的.dfm文件中没有文本。在创建表单后,在运行时设置文本。例如,在构造函数中,或在OnCreate事件处理程序中。

答案 1 :(得分:1)

调试VCL,我在TMenuItem.AppendTo过程中跟踪了该问题。当变量IsOwnerDraw设置为False时,图像不会显示,并且在GetImageList返回Nil时会发生这种情况,在这种情况下。也许这是VCL上的一个错误,但在TMainMenu中设置OwnerDraw = True可以解决问题。

编辑:考虑到OwnerDraw = True会产生重叠字幕的问​​题,我建议您将父TMenuItems的Bitmap属性设置为任何位图作为变通方法。此位图将被忽略,并且将读取TImageList中的图像。然后,您可以设置OwnerDraw = False,图像仍会显示。