Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Position von Quadraten kontrollieren (https://www.delphipraxis.net/29063-position-von-quadraten-kontrollieren.html)

Jörn 3. Sep 2004 12:52


Position von Quadraten kontrollieren
 
Okay heute mal eine Frage die nicht direkt mit Delphi zu tun hat. Ich schreibe ein kleines Tool, und dafür brauche ich einen kleinen Denkansatz. Es geht darum:
Ich habe ein quadratisches Feld, in diesem sind zwei weitere kleine Quadrate, eines oben links, das andere unten rechts. Diese beiden kleinen Quadrate können mit der Maus verschoben werden und dienen dazu, die Eckpunkte eines Rechtecks anzugeben, das wiederum im ersten, großen Quadrat sein soll.
Mein Problem ist nun: Wie verhindere ich möglichst elegant, dass das untere rechte Quadrat nicht über und/oder links vom anderen Quadrat ist, bzw umgekehrt? Ich hoffe ihr versteht was ich meine... kompliziert zu erklären.

Danke schon mal, MfG

Alexander 3. Sep 2004 13:07

Re: Position von Quadraten kontrollieren
 
Naja, du musst ja die jeweiligen Koordinaten der Quadrate speichern. Und beim Verschieben müsstest du im Prinzip überprüfen, ob sie sich schneiden. Ich denke du würst hier fündig werden, wenn du nach Hier im Forum suchenKollision oder [dp]überschneiden[/dp] suchst.

glkgereon 3. Sep 2004 13:15

Re: Position von Quadraten kontrollieren
 
also du kannst die verschieben???
in welcher form hast du die den vorliegen?

als ne art componente?

dann kannst du einfach sagen

Delphi-Quellcode:
//wenn die höhen falsch sind
if rechteck1.Top>rechteck2.Top    //wenn zweites höher liegt als erstes
then Rechteck2.Top:=Rechteck1.Top; //dann angleichen

if rechteck1.Top+rechteck1.Hight>rechteck2.Top+rechteck2.Hight //wenn erstes tiefer liegt
then Rechteck1.High:=Rechteck2.Top+Rechteck2.High-Rechteck1.Top;//dann angleichen

//wenn die seiten falsch sind
if rechteck1.Left>rechteck2.Left   //wenn zweites weiter links liegt als erstes
then Rechteck2.Left:=Rechteck1.Left;//dann angleichen

if rechteck1.Left+rechteck1.Width>rechteck2.Left+rechteck2.Width   //wenn erstes weiter rechts liegt
then Rechteck1.Width:=Rechteck2.Left+Rechteck2.Width-Rechteck1.Left;//dann angleichen
wenn du das aber zb als canvas-"gemälde" hast, dann habich hglaub ich dier frage missverstanden...

Alexander 3. Sep 2004 13:46

Re: Position von Quadraten kontrollieren
 
Stop! Das Prinzip ist das gleiche. Du musst die Position du speichern!

Jörn 3. Sep 2004 13:58

Re: Position von Quadraten kontrollieren
 
Hmm ich glaube ich verhindere diesen Tausch der Seiten einfach dadurch, dass ich die Region für den Mauszeiger mittels ClipCursor begrenze. Es scheint niemandem eine schönere Lösung einzufallen. Bin aber für weitere Ideen offen. Diese kleinen Quadrate zeichne ich übrigens selber. Wollte das erst mit 2 TShape's machen, die sehen aber komisch aus wenn ich die entsprechend klein mache (etwa 9*9 Pixel).


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz