Overlapping non square panels

When using round panels, the underlying components are not painted in the panel square. Investigating this I've some suggestions.

Change to lines in procedure TAdvSmoothPanel.WMPaint from commented to this:

// if (Parent is TWinCtrl) then // Won't work. Never true
// (Parent as TWinCtrl).PaintCtrls(DC, nil); // PaintCtrls won't work for TWinControl's
if (Parent is TWinCtrl) then // TVN
(TWinCtrl(Parent)).PaintCtrls(DC,Self); // TVN

And Change this:

procedure TWinCtrl.PaintCtrls(DC: HDC; First: TControl);
Var
i,c:Integer;
begin
// PaintControls(DC, First); // Only works for other than TWinControl's
i:=0;
c:=-1;
// Find index for selv in control list
While (i<ControlCount) and (c<0) Do Begin
If First=Controls[i] Then c:=i;
Inc(i);
End;
i:=0;
// Only paint control under self
While i<C Do Begin
If (Controls[i] is TWinControl) {And (Controls[i]<>Self)} then
with TWinControl(Controls[I]) do
If Visible and RectVisible(DC, System.Types.Rect(Left, Top, Left + Width, Top + Height)) // Visible under us?
then PaintTo(DC, Left, Top);
Inc(i);
End;
end;

Capture.PNG

This will then be possible :

I retested the component here as-is and I cannot see a problem:

How exactly can such issue be reproduced?

image

Thanks for this extra info with which the problem is better understood.
We have seen this now and thanks for your suggested code improvements.
These will be integrated in the next release.