禁用Vista Aero上的进度条动画

时间:2008-11-24 09:57:48

标签: delphi windows-vista progress-bar vcl aero

我正在使用Delphi 2009 VCL TProgressBar作为一种“空/满”仪表。

在Vista上,启用Aero主题后,会有一个与之关联的动画,这对于测量仪来说很烦人且不合适。

有没有办法禁用此功能(不是通过调整用户的主题设置!)来阻止此控件上的动画?

为了澄清,我想要的东西基本上与Windows资源管理器中的“磁盘空间使用”米相同。没有动画,但仍然有漂亮的边框和阴影效果。

更新

我知道我需要一个“米”,而不是一个真正的进度条。如何使用标准的Windows进度条控件实现主题仪表?

5 个答案:

答案 0 :(得分:11)

根据Vista UI guidelines for progress bars,您根本不应该将TProgressBar用于此类目的,它声明:

  

仅将进度条用于进度。使用米来表示与进度无关的百分比。

有许多针对Process Automation应用程序等的第三方组件(例如Abakus VCL),您可以使用其中一个控件吗?

答案 1 :(得分:10)

您可以尝试为该控件关闭主题;

SetWindowTheme(ProgressBar.Handle, ' ', ' ');

答案 2 :(得分:3)

http://rmklever.com/尝试VistaProBar 它 NOT 有与之相关的动画。

答案 3 :(得分:1)

我还没有尝试过,但这个问题看起来对winforms有一个有用的答案。

How can I use a meter-style progress bar?

现在将其转换为Delphi ......

答案 4 :(得分:0)

看看this forum thread。这是我找到的唯一有希望的链接,第一个帖子提到了不同的进度条状态,因此更改属性Smooth,State和Style可能无济于事。

如果上次发布的提示确实是以米为单位绘制进度条的唯一方法,那么最好的选择是创建TProgressBar的后代类,覆盖WM_PAINT处理程序,检查Vista和启用的主题,在这种情况下,使用UxTheme中的函数绘制控件的不同部分。