9

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

在 Vista 上,启用 Aero 主题时,它有一个与之相关的动画,这很烦人并且不适合仪表。

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

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

更新:

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

4

5 回答 5

11

根据进度条的 Vista UI 指南,您根本不应该将 TProgressBar 用于此类目的,它指出:

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

有很多针对流程自动化应用程序等的第三方组件(例如Abakus VCL),也许您可​​以使用这些控件之一来代替?

于 2008-11-24T15:08:07.240 回答
10

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

SetWindowTheme(ProgressBar.Handle, ' ', ' ');
于 2008-11-24T22:33:47.607 回答
3

在http://rmklever.com/上试试 VistaProBar 它没有与之关联的动画。

于 2011-05-05T16:20:45.897 回答
1

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

如何使用仪表式进度条?

现在将其转换为Delphi ...

于 2011-05-05T13:41:50.467 回答
0

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

如果上一篇文章中的提示确实是以仪表样式绘制进度条的唯一方法,那么您最好的选择是创建 TProgressBar 的后代类,覆盖 WM_PAINT 处理程序,检查 Vista 和启用的主题,然后case 使用 UxTheme 中的函数来绘制控件的不同部分。

于 2008-11-24T21:37:34.943 回答