代码之家  ›  专栏  ›  技术社区  ›  mjn anonym

如何减少Delphi中的页面控制闪烁?

  •  8
  • mjn anonym  · 技术社区  · 14 年前

    在Delphi2009中,我发现页面控件的闪烁(在窗体的大小调整期间发生)可以通过设置其 DoubleBuffered 属性设置为true。

    但是,如果我将控件添加到PageControl选项卡页,则无论其DoubleBuffered属性设置如何,它们都将闪烁。我也尝试过启用和不启用运行时主题。

    2 回复  |  直到 14 年前
        1
  •  4
  •   mjn anonym    14 年前

    设置 ParentBackground False 对于页面控件上的组件帮助很大。然而,这会导致这些面板组件的颜色不同,它们现在都有一个较暗的背景。也许这可以很容易地修复(而不丢失主题支持)。

    我也安装了 VCL Fix Pack 有固定的 QC 56252 (TpageControl在激活主题时闪烁很多)。

        2
  •  0
  •   Wim ten Brink    14 年前

    这远非完美,但您可能希望使用它:

      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更新。不过,它可能不那么漂亮,但这是一个意见的问题……