2

有谁知道现有的 Delphi 组件,即

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

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

4

1 回答 1

5

VCLTButton使用图像列表实现图像支持的原因是底层 Win32BUTTON控件如何支持图像。如果您想通过淡入/淡出动画获得完整的主题支持,那么您需要使用本机控件。好吧,你可以尝试自己复制这些效果,但我认为成功的机会很低,而且你总是会受到未来主题变化的影响。这就是咬你的东西TBitBtn

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

如果你有一个不支持ImageListImageIndex属性的 Delphi 版本,你将需要实现你自己的按钮控件来包装 Win32BUTTON控件。

于 2014-09-19T09:00:35.787 回答