Corrección de errores para BorderWidth> 0 en combinación con una barra de desplazamiento?

Durante la escritura de un control personalizado, al intentar implementar el predeterminadoBorderWidth propiedad correcta, parece que me he topado con un error en el comportamiento de la pintura cuando se muestran las barras de desplazamiento: los espacios entre las barras de desplazamiento y la extensión del control no están pintados.

Para reproducir el error, implementa lo siguienteOnCreate Controlador para la forma principal de un nuevo proyecto:

procedure TForm1.FormCreate(Sender: TObject);
begin
  AutoScroll := True;
  BorderWidth := 20;
  SetBounds(10, 10, 200, 200);
  with TGroupBox.Create(Self) do
  begin
    SetBounds(300, 300, 50, 50);
    Parent := Self;
  end;
end;

Los resultados para D7 y XE2:

Parece que esto está arreglado por fin en Delphi XE2. Probablemente, este error residiría enTWinControl.WMNCPaint, pero mirando aControls.pas, No puedo encontrar diferencias significativas en la implementación entre D7 y XE2.

Me gustaría recibir respuestas en:

Cómo escribir una corrección de errores para esta rareza,De qué versión de Delphi parece solucionarse este error.

Respuestas a la pregunta(1)

Su respuesta a la pregunta