Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Kollisionsabfrage mehrer Controls


thepaine91 - Mi 09.09.09 14:27
Titel: Kollisionsabfrage mehrer Controls
Hi, ;)

Und zwar hab ich eine Drag and Drop steuerung programmiert die man innerhalb von 1 min eingebaut hat und dann für alle Komponenten auf der (Form) funktioniert.

Ich hätte jetzt gerne das wenn auf Form1 ein Button1 und Button 2 liegt beim verschieben von Button2 dieser sich nicht in Button1 schieben lässt. Hab jetzt provisorisch schonmal was zusammen geschrieben aber das klappt nicht so ganz....

Fehler in der Funktionsweise.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
  i := 0;  //Schleifenvariable
  kollision_ctrls_l := true;  //Wenn false dann Kollision und keine Aktion
  while (i < length(kol_array)) and (kollision_ctrls_l) do //bewegung nach links/rechts
// kol_array = Array mit den Positionen zwischen denen sich die Komponente nicht bewegen darf. (left,..)
  begin
    if (pointili.x - habzugwert > kol_array[i,0]) and (pointili.X - habzugwert + Sender_move.Width < kol_array[i,1]) then kollision_ctrls_l := false;
    inc(i);
  end;
  kollision_ctrls_t := true;
  i := 0;
  while (i < length(kol_array)) and (kollision_ctrls_t) do  // Bewegung nach oben/unten
  begin
    if (pointili.Y - vabzugwert > kol_array[i,2]) and (pointili.Y - vabzugwert + Sender_move.height < kol_array[i,3]) then kollision_ctrls_t := false;
    inc(i);
  end;


Ehrlich gesagt klappts garnicht.... ^^ steh grad aber aufm schlauch und finde einfach den Fehler nicht...