Das zuweisen des Balls habe ich mit:
shpBall := TShape.create(fSpielfeld);
Das scheint aber nicht korrekt zu sein.
Mein Contructor von TBall sieht so aus:
constructor Tball.Create;
Du rufst den richtigen virtuellen constructor von TComponent auf, deklarierst aber einen anderen, der aber nicht aufgerufen wird.
Deine Deklaration müsste eigentlich so aussehen:
Delphi-Quellcode:
type
TBall = class({...})
public
constructor Create(AOwner: TComponent); override;
{...}
Und nicht das "inherited;" als erste Zeile im constructor vergessen.