在 Delphi 2009 中,我发现 PageControl 的闪烁(在调整表单大小期间发生)可以通过将其DoubleBuffered
属性设置为 true 来减少。
但是,如果我将控件添加到 PageControl 选项卡表中,无论它们的 DoubleBuffered 属性设置如何,它们都会闪烁。我也尝试过启用和不启用运行时主题。
在 Delphi 2009 中,我发现 PageControl 的闪烁(在调整表单大小期间发生)可以通过将其DoubleBuffered
属性设置为 true 来减少。
但是,如果我将控件添加到 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;
这是迄今为止我发现的最好的,并且会减少页面控件的 Windows 更新。虽然它可能不那么漂亮,但这是一个意见问题......