Bugfix dla BorderWidth> 0 w połączeniu z paskiem przewijania?

Podczas pisania formantu niestandardowego podczas próby implementacji domyślnejBorderWidth Właściwość poprawnie, wydaje mi się, że natknąłem się na błąd w zachowaniu malowania, gdy wyświetlane są paski przewijania: przestrzenie między paskami przewijania a zasięgiem kontroli nie są malowane.

Aby odtworzyć błąd, wykonaj następujące czynnościOnCreate handler dla głównej formy nowego projektu:

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;

Wyniki dla D7 i XE2:

Wygląda na to, że w Delphi XE2 zostało to naprawione. Prawdopodobnie ten błąd będzie rezydował wTWinControl.WMNCPaint, ale patrząc naControls.pas, Nie mogę znaleźć żadnych istotnych różnic w implementacji między D7 a XE2.

Chciałbym uzyskać odpowiedzi na:

Jak napisać poprawkę na tę dziwność,Z której wersji Delphi ten błąd wydaje się być naprawiony.

questionAnswers(1)

yourAnswerToTheQuestion