是否有人知道现有的Delphi组件,即
如果没有这样的组件可用,是否可以修改TBitBtn的主题行为以复制TButton的行为?我不是主题的主人,但也许你可以从ThemeServices获得不同的淡入淡出阶段?或者你是否必须自己在热点和非热点状态之间创建淡入淡出效果?
答案 0 :(得分:5)
VCL TButton
使用图像列表实现图像支持的原因是底层Win32 BUTTON
控件支持图像的方式。如果您希望使用淡入/淡出动画获得完整的主题支持,则需要使用本机控件。好吧,你可以尝试自己复制这些效果,但我认为成功的机会很低,你总是会受到未来主题变化的影响。这是TBitBtn
咬你的原因。
因此,解决问题的方法是使用带有图像列表的TButton
控件。 TButton
的实现在任何情况下都使用私有映像列表,因为底层控件所需的索引是固定的。因此,TButton
控件无论如何都需要复制您的图像。因此,您可以轻松编写自己的按钮控件,该控件基于TButton
或其中一个祖先,可以显示一个字形属性。然后将该字形推入图像列表,然后进入底层的Win32控件。
如果您的Delphi版本不支持ImageList
和ImageIndex
属性,那么您需要实现自己的包含Win32 BUTTON
控件的按钮控件。< / p>