如何减少Delphi中的PageControl闪烁?
在Delphi 2009中,我发现可以通过将其DoubleBuffered
属性设置为true来减少DoubleBuffered
的闪烁 - 这会在调整窗体大小时发生。
但是,如果我将控件添加到PageControl标签页中,则无论DoubleBuffered属性设置如何,它们都将闪烁。 我也尝试过和没有启用运行时主题。
在PageControl的组件上设置ParentBackground
为False
有帮助。 然而,这会导致这些面板组件的颜色不同,现在它们都有较暗的背景。 也许这可以很容易地解决(不会丢失主题支持)。
我还安装了VCL Fix Pack,它有一个QC 56252的修复程序(TPageControl与主动主题闪烁很多)。
这远不是完美的,但你可能想要使用这个:
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;
这是我找到的最好的,并且会减少页面控件的窗口更新。 不过,这可能不太漂亮,但这是一个意见问题...
链接地址: http://www.djcxy.com/p/48497.html