Benutze die TObjectList mit OwnsObjects = True, wie in dem Beispiel im Anhang von Sir Rufo. Wenn du dort Delete aufrufst und OwnsObjects = True ist, löscht sie automatisch das Objekt mit. Das heißt der Speicher wird freigegeben und das Teil verschwindet von der Form (Ich habe das noch nie gemacht, aber ich vermute, dass es sich so verhält). Die normale TList kennt die Objekte nur und löscht sie nur aus der Liste beim .Delete, das Objekt an sich bleibt weiterhin bestehen und bleibt deshalb auch auf deiner Form.
Ich lese gerade, dass Count immer auf 1 bleibt - schau mal mit dem Debugger, wie oft dein Programm in BombenListe.Add() und BombenListe.Delete() reinläuft. Da wird was schiefgehen, der Count sollte nicht auf 1 bleiben. Oder die Stelle, die den Count anzeigt, wird zur falschen Zeit aufgerufen..