¿Cómo puedo reducir el parpadeo PageControl en Delphi?
-
26-09-2019 - |
Pregunta
En Delphi 2009 me encontré con que el parpadeo de un PageControl - que se produce durante el cambio de tamaño de la forma -. Puede reducirse estableciendo su propiedad DoubleBuffered
true
Sin embargo, si añado a los controles tabsheets PageControl, que oscilará independientemente de su valor de la propiedad DoubleBuffered. También he probado con y sin temas de ejecución habilitados.
Solución
Configuración ParentBackground
a False
para los componentes de la PageControl ayudó mucho. Sin embargo esto resulta en un color diferente de estos componentes del panel, todos ellos tienen un fondo más oscuro ahora. Tal vez esto se puede solucionar fácilmente (sin perder Tema de apoyo).
También instalado VCL Fixpack que tiene una solución para QC 56252 (TPageControl parpadea mucho con theming activo).
Otros consejos
Esto está lejos de ser perfecto, pero es posible que desee utilizar esta:
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;
Es el mejor que he encontrado hasta aquí, y reducirá la actualización de las ventanas de su control de la página. Puede ser que sea menos bonita, sin embargo, pero eso es una cuestión de opiniones ...