delphi - 如何让 TProgressBar 停止滞后?

标签 delphi windows-vista delphi-2009

我有一个运行大量操作的应用程序,我正在尝试使用 TProgressBar 来跟踪正在发生的情况。我设置了多个步骤,并调用 .StepIt 来增加进度条。

问题是,它并没有很好地跟上。它似乎不喜欢直接跳到正确的位置,而是逐渐滑动到正确的位置。如果您追求的是养眼的效果,那么这一切都很好,但是当我试图准确地表示我的日常进度时,这使它看起来总是落后于真实状态。我怎样才能关闭该“功能”?

我只在 Windows Vista 下注意到这种情况发生。不确定XP上是否也会发生这种情况,因为当我在XP上测试时,该过程进行得更快,而且结束得太快。 :P 但这可能是也可能不是 Vista 特定的。不管怎样,这都让我发疯。有谁知道如何解决吗?

最佳答案

如果您不介意将进度条设置为黄色而不是绿色,我有一个快速但部分且不优雅的解决方案:

  ProgressBar1.SmoothReverse := True;
  ProgressBar1.State := pbsPaused; // for yellow or pbsError for red

或者,如果您不介意失去远景/主题外观并返回到平坦的蓝色:

  UxTheme.SetWindowTheme(ProgressBar1.Handle, ' ', ' ');

根据微软的说法,真正的“问题”是你试图将 ProgressBar “扭曲”成 Meter,但他们声称事实并非如此。

你也可以尝试自己画它;-)

关于delphi - 如何让 TProgressBar 停止滞后?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1061715/

相关文章:

arrays - 包含带有 'Implicit' 类运算符的动态数组的 Delphi Record 的初始化

c++ - 浮点运算的编程风格

delphi - 有没有办法在知道字段名称和值的情况下更新记录中的字段

c++ - 禁用 Windows 中的文件夹虚拟化

delphi - 在 Delphi 2009 上安装最新版本的 Indy 10

delphi - 如何将 D2009 .groupproj 文件转换为 D2006 .bdsgroup 文件?

delphi - 如何确定 Windows 7 桌面是否有 ActiveWindow

c# - 在 C# 中拦截 Windows Vista 关闭事件

windows-vista - EFS 加密 key 弹出

algorithm - 统计项目频率