我有一个带图标的TMainMenu。一切都很好,直到我在表格上放置TMemo。当我运行我的程序时,图标消失了。发生了什么事,我怎么能解决这个问题?
我使用Delphi 2010作为IDE。
答案 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
,图像仍会显示。