是否有一个组件的行为类似于正确主题的TBitBtn



是否有人知道现有的Delphi组件,即

  • 主题像T按钮一样正确(在Windows7及以上版本中鼠标悬停时具有淡入/淡出效果)
  • 支持类似TBitBtn的Glyph,但不使用ImageLists(与TBitBtn相同)

如果没有这样的组件可用,是否可以修改TBitBtn的主题行为来复制TButton的主题行为?我不是主题化的大师,但也许你可以从主题服务中获得不同的淡入淡出阶段?或者你必须自己在热态和非热态之间创造渐变效果吗?

VCL TButton使用映像列表实现映像支持的原因是底层Win32 BUTTON控件支持映像的方式。如果你想拥有淡入淡出动画的完整主题支持,那么你需要使用本机控件。好吧,你可以尝试自己复制这些效果,但我认为成功的几率很低,而且你总是会受到未来主题变化的影响。这就是TBitBtn正在咬你的东西。

因此,解决问题的方法是使用带有图像列表的TButton控件。TButton的实现在任何情况下都使用私有映像列表,因为底层控件所需的索引是固定的。所以TButton控件无论如何都会复制您的图像。因此,您可以轻松地基于TButton或其祖先之一编写自己的按钮控件,以公开字形属性。然后将该字形推送到图像列表中,然后推送到底层Win32控件中。

如果您的Delphi版本不支持ImageListImageIndex属性,则需要实现自己的按钮控件,该控件封装Win32 BUTTON控件。

相关内容

最新更新