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

Ste*_*eve 2 delphi themes glyph button uxtheme

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

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

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

Dav*_*nan 5

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

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

如果您的Delphi版本不支持ImageListImageIndex属性,则需要实现自己的包含Win32 BUTTON控件的按钮控件.