Das könnte daran liegen, dass du in deiner Methode Kollision() die Vergleichsrechtecke falsch initialisierst:
Delphi-Quellcode:
// ...
for i := 0 to High(Items) do
begin
r1.Left := Items[i].x;
r1.Top := Items[i].y;
r1.Right := Pred(Items[i].w + r1.Left);
r1.Bottom := Pred(Items[i].h + r1.Top);
// ...
marabu