Hallo,
Augenkrebs
Rücke bitte richtig ein und benutze (hier) immer
begin end
Ab Kiste k4 wirst Du mächtig Probleme bekommen,
wenn Du nicht wie vorgeschlagen alle Kisten in eine Liste packst.
Du musst dann
nur eine Prüfung auf 2 Kisten machen,
benutzt aber die Schleife.
Ausserdem würde ich mit einer virtuellen Kiste arbeiten,
die die Ziel-Position der bewegten Kiste enthält, als ob es keine anderen Kisten gibt.
k_Ziel:= k1; // Daten von Kiste 1 holen
K_Ziel.Top:= K_Ziel.Top-50;
Jetzt k_Ziel mit kx (k2-k10) prüfen, ob es eine Überlappung gibt.
Bei der Überlappung würde ich nicht auf Überlappung, sondern auf
Nicht-Überlappung testen.
Das ist einfacher, Bsp:
Frage: Liegt ky von der Höhe überlappend auf kx?
ky.Top<kx.Top+kx.Height
Und das gleiche für links, rechts, oben unten.
Am besten mal auf Quadrat-Papier aufmalen oder 2 Kisten ausschneiden und übereinanderlegen.