Weil dein Canvas gar nicht weiß, wo er hinzeichnen soll. Damit das funktioniert mußt Du ihn noch mit dem Formular "verbinden":
Delphi-Quellcode:
constructor TMyForm.Create(AOwner: TComponent);
begin
inherited;
ACanvas := TMyCanvas.Create;
ACanvas.Handle := Canvas.Handle; // <- Das hier fehlt noch
end;
Ach: Damit das auch wirklich funktioniert solltest Du deinen eigenen Canvas nicht per Eigenschaft "Canvas" bereitstellen, da Du dait eine bereits bestehende Eigenschaft überdeckst. Nenne deine Eigenschaft lieber "AdvancedCanvas" oder so.