>TScrollingPaintBox = class(TScrollingWinControl)
>private
>Canvas: TCanvas;
>public
>constructor Create(aOwner:TComponent);
>end;
I would change the definition as follows:
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 that belongs to the
HWND of the control. Also, override is important on your constructor
and destructor to insure that they are actually called. I hope this
helps.