procedure DrawParentBackground(Control: TControl; DC: HDC; R: PRect = nil; bDrawErasebkgnd: Boolean = False); var SaveIndex: Integer; MemDC: HDC; MemBmp: HBITMAP; begin if R <> nil then begin MemDC := CreateCompatibleDC(DC); MemBmp := CreateCompatibleBitmap(DC, Control.Width, Control.Height); SelectObject(MemDC, MemBmp); try with Control.BoundsRect.TopLeft do SetWindowOrgEx(MemDC, X, Y, nil); if bDrawErasebkgnd then Control.Parent.Perform(WM_ERASEBKGND, Integer(MemDC), Integer(MemDC)); Control.Parent.Perform(WM_PAINT, Integer(MemDC), Integer(MemDC)); with Control.BoundsRect.TopLeft do BitBlt