Delphi:使用自定义VCL样式更新字幕时出现大量闪烁

时间:2016-04-18 03:56:14

标签: delphi delphi-10-seattle vcl-styles

使用Delphi Seattle,使用按钮和标签获取以下代码,并将Form&#39的DoubleBuffering设置为True。

procedure TForm1.Button1Click(Sender: TObject);
Var a: Integer;
    s: Int64;
begin
  s := GetTickCount;
  for a := 1 to 10000 do begin
    Label1.Caption := 'Testing '+IntToStr(a);
    Application.ProcessMessages;
  end;
  s := GetTickCount - s;
  caption := inttostr(s);
end;

除了重度闪烁之外,如果使用VCL样式,循环也需要更长的时间。 其他控件也是如此,即TGroupBox,TStatusBar。更新表单Caption没有闪烁,但速度要慢得多。

如何修复闪烁?

从评论中更新:

代码只是为了轻松重现问题。我遇到的问题是在大型应用程序的一部分中执行文件下载并且在触发数据接收事件时更新进度,即"完成12.05 MB / 200 MB"。使用自定义VCL样式时性能下降(和闪烁)是如此糟糕,因为在默认情况下下载速度更快" Windows"风格。

0 个答案:

没有答案