Delphi TBitBtn仅使用旧版Windows主题显示
我为我的Delphi 6应用程序创建了清单文件,这样它就可以根据Windows定义的主题显示控件(controls 6.0)。除了Delphi TBitBtn仅使用旧版Windows主题显示,delphi,user-interface,button,manifest,delphi-6,Delphi,User Interface,Button,Manifest,Delphi 6,我为我的Delphi 6应用程序创建了清单文件,这样它就可以根据Windows定义的主题显示控件(controls 6.0)。除了TBitBtn组件外,其他一切看起来都很好,该组件使用传统主题显示: 在Windows XP和Windows 7上,无论当前主题如何,即使没有为TBitBtn组件分配图像,行为都是相同的 现在,当我在表单上放置一个常规的t按钮时,它显示OK。然后,如果我在运行时以编程方式将图像设置到此按钮(使用SendMessage(Handle、BM\u SETIMAGE、ima
TBitBtn
组件外,其他一切看起来都很好,该组件使用传统主题显示:
在Windows XP和Windows 7上,无论当前主题如何,即使没有为TBitBtn
组件分配图像,行为都是相同的
现在,当我在表单上放置一个常规的t按钮时,它显示OK。然后,如果我在运行时以编程方式将图像设置到此按钮(使用SendMessage(Handle、BM\u SETIMAGE、image\u图标、LPARAM(图标))
,它会立即将其样式恢复为旧样式
有没有一种方法可以使TBitBtn
使用正确的样式,或者在常规TButton
上显示glyph,而不恢复到Delphi 6中的旧样式?在Delphi 6中,仅仅添加comctl32 v6清单是不够的。您还需要修改VCL以了解主题。TBitBtn
控件是一个VCL实现的控件,在Delphi 6版本中,它对XP主题一无所知
处理这个问题的标准方法是添加一些第三方软件来执行这个魔术。这就是问题所在
以下是Delphi 6应用程序的屏幕截图,其中包括主题管理器:
谢谢你的回答。让我困惑的是,当我设置图像时,为什么TButton
会在运行时恢复到遗留模式。我猜VCL会出于任何原因接管绘画。同样,主题管理器解决了这个问题。也就是说,在我的测试中,我没有观察到您报告的行为。TButton
或TBitBtn
行为?Delphi 6?这个评论线程是关于TButton
的。无论如何,我想我回答了你的问题,不是吗?是的,我知道theme manager,但在这种情况下,我必须在我的所有应用程序中包括theme manager DLL,对吗?我宁愿保留传统的外观。我不会指望WinXP的BM_SETIMAGE
(无论是否设置BS_图标
样式)。它不能像预期的那样工作!使用Win7应该不会有任何问题。你是对的-它删除了标题,但显示了图像(并恢复了样式)。WM_设置图标不工作。