--- ---
type TScrollingPaintBox = class(TScrollingWinControl) private FCanvas: TCanvas; public constructor Create(aOwner: TComponent); override; destructor Destroy; override; property Canvas: TCanvas read FCanvas; end; constructor TScrollingPaintBox.Create(AOwner: TComponent); begin inherited Create(AOwner); FCanvas := TControlCanvas.Create; TControlCanvas(FCanvas).Control := Self; end; destructor TScrollingPaintBox.Destroy; begin FCanvas.Free; inherited Destroy; end;
A TControlCanvas is important because it creates a DC (device context) that belongs to the HWND of the control. Also, override is important on your constructor and destructor to ensure that they are actually called.