Как я могу уменьшить мерцание PageControl в Delphi? - PullRequest
8 голосов
/ 27 октября 2010

В Delphi 2009 я обнаружил, что мерцание PageControl, возникающее при изменении размера формы, можно уменьшить, установив для свойства DoubleBuffered значение true.

Однако, если я добавлю элементы управления в PageControlТаблицы будут мерцать независимо от настроек их свойства DoubleBuffered.Я также пробовал с включенными и без включенных тем выполнения.

Ответы [ 2 ]

4 голосов
/ 01 ноября 2010

Настройка ParentBackground на False для компонентов в PageControl очень помогла. Однако это приводит к другому цвету этих компонентов панели, теперь все они имеют более темный фон. Может быть, это легко исправить (без потери поддержки тем).

Я также установил VCL Fix Pack , в котором есть исправление для QC 56252 (TPageControl много мигает с активными темами).

0 голосов
/ 27 октября 2010

Это далеко не идеально, но вы, возможно, захотите использовать это:

  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;

Это лучшее, что я нашел на данный момент, и уменьшит обновление окон вашего элемента управления страницы,Хотя это может быть менее красиво, но это вопрос мнений ...

...