Bugfix para BorderWidth> 0 em combinação com uma barra de rolagem?
Durante a gravação de um controle personalizado, ao tentar implementar o padrãoBorderWidth
propriedade corretamente, parece ter tropeçado em um bug no comportamento da pintura quando as barras de rolagem são mostradas: os espaços entre as barras de rolagem e a extensão do controle não são pintados.
Para reproduzir o erro, implemente o seguinteOnCreate
manipulador para a forma principal de um novo projeto:
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;
Os resultados para D7 e XE2:
Parece que isso foi consertado no Delphi XE2. Provavelmente, esse bug residiria emTWinControl.WMNCPaint
, mas olhandoControls.pas
, Não consigo encontrar diferenças significativas na implementação entre D7 e XE2.
Eu gostaria de obter respostas sobre:
Como escrever um bugfix para essa esquisitice,De qual versão do Delphi este bug parece estar corrigido.