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

时间:2014-09-19 08:44:56

标签: delphi button themes glyph uxtheme

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

  • 正确主题,如TButton(在Windows 7及更高版本中鼠标悬停时具有淡入/淡出效果)
  • 支持TBitBtn等字形但不使用ImageLists(与TBitBtn相同)。

如果没有这样的组件可用,是否可以修改TBitBtn的主题行为以复制TButton的行为?我不是主题的主人,但也许你可以从ThemeServices获得不同的淡入淡出阶段?或者你是否必须自己在热点和非热点状态之间创建淡入淡出效果?

1 个答案:

答案 0 :(得分:5)

VCL TButton使用图像列表实现图像支持的原因是底层Win32 BUTTON控件支持图像的方式。如果您希望使用淡入/淡出动画获得完整的主题支持,则需要使用本机控件。好吧,你可以尝试自己复制这些效果,但我认为成功的机会很低,你总是会受到未来主题变化的影响。这是TBitBtn咬你的原因。

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

如果您的Delphi版本不支持ImageListImageIndex属性,那么您需要实现自己的包含Win32 BUTTON控件的按钮控件。< / p>