如何减少Delphi中的PageControl闪烁?

时间:2010-10-27 08:15:04

标签: delphi delphi-2009 vcl flicker tpagecontrol

在Delphi 2009中,我发现PageControl的闪烁 - 在调整表单大小期间发生 - 可以通过将其DoubleBuffered属性设置为true来减少。

但是,如果我向PageControl标签页添加控件,无论DoubleBuffered属性设置如何,它们都会闪烁。我也试过启用和不启用运行时主题。

2 个答案:

答案 0 :(得分:4)

为PageControl上的组件设置ParentBackgroundFalse有很大帮助。然而,这会导致这些面板组件的颜色不同,现在它们都具有较暗的背景。也许这可以轻松修复(不会丢失主题支持)。

我还安装了VCL Fix Pack,它修复了QC 56252(TPageControl在主动主题下闪烁很多)。

答案 1 :(得分:0)

这远非完美,但你可能想要使用它:

  protected
    procedure WMExitSize(var Message: TMessage); message WM_EXITSIZEMOVE;
    procedure WMEnterSize(var Message: TMessage); message WM_ENTERSIZEMOVE;

procedure TFormMain.WMEnterSize(var Message: TMessage);
begin
  if Assigned(PageControlView.ActivePage) then
    PageControlView.Align := alNone;
end;

procedure TFormMain.WMExitSize(var Message: TMessage);
begin
  if Assigned(PageControlView.ActivePage) then
    PageControlView.Align := alClient;
end;

这是我发现的最好的,它将减少页面控件的Windows更新。但它可能不那么漂亮,但这是一个意见问题......