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.