En una aplicación Delphi 2010 con temas habilitados Tengo dos TPageControls (uno dentro del otro) en una forma con un fondo clMoneyGreen:Cómo reparar el color de fondo de TPageControl sin perder el tema del sistema?
El control de la página externa dibujar correctamente su fondo con el color de la componente principal, el control de página interno sin embargo dibuja su fondo con clBtnFace (puntos suspensivos rojos en la imagen) en lugar de su control principal (TTabSheet) 's blanco. ¿Hay alguna manera de solucionar esto sin devolver el control de página a su aspecto clásico de Windows (perder el tema de Windows)?
Todas las correcciones que he encontrado en Google y aquí en Stack Overflow involucran OwnerDraw que hacen que el control de página pierda su temática.
He intentado crear un nuevo componente de control de la página heredada de TPageControl con un método para manejar el mensaje ventanas WM_ERASEBKGND:
procedure TMyPageControl.WMEraseBkGnd(var Msg: TWMEraseBkGnd);
begin
if Parent is TCustomPageControl then
begin
Brush.Color := clWhite;
Windows.FillRect(Msg.dc, ClientRect, Brush.Handle);
Msg.Result := 1;
end
else
inherited;
end;
Se pinta el fondo blanco sino algún otro método llamado después WM_ERASEBKGND (supongo TWinControl de Método WM_PAINT) repinta gris sobre el fondo blanco.
Nota: Estoy investigando esto porque estoy implementando el tema en una aplicación grande portada desde Delphi 7, es por eso que estoy tratando de resolver este problema a través de un componente derivado: puedo buscar y reemplazar fácilmente todos los 207 TPageControl ocurre con mi nueva clase, pero colocar paneles detrás de algunos de ellos requeriría mucho más tiempo.
Esta [página de embarcadero] (http://qc.embarcadero.com/wc/qcmain.aspx?d=80381) todavía informa el error como abierto –
Por cierto, lea esta página para obtener más información acerca de aceptando respuestas: http://meta.stackexchange.com/questions/5234/ Gracias –
Gracias a un amigo, he logrado tener en mis manos una instalación Delphi XE2 y el control de página funciona como se esperaba. Voy a esperar un poco más, si nadie más responde la pregunta, voy a elegir tu respuesta. –