Problem mit Objekte auf der Form verschieben...(FAQ-Beitrag)
-
Hi mal wieder...
In der FAQ steht ja das mit ReleaseCapture usw., da es im BCB1 aber noch kein ReleaseCapture() gibt hab ich das halt mal mit dem ganzen anderen Codezeugs da in der FAQ versucht (Das von m@loo). Das funktioniert auch alles wunderbar.
ABER: Wenn ich jetzt die Maus zu schnell bewege dann landet die Kompo irgendwo im Nirvana (Die Left- und Top-Werte werden auf irgendwas um die 32700 buchsiert, entweder nur einer oder auch beide) und sie verschwindet vom Bildschirm...
Hat jemand ne Ahnung was ich da tun kann?
FAQ-Beitrag: http://www.c-plusplus.net/forum/viewtopic.php?t=39246
-
*schieb*
-
Du willst im LAUFENDEN Programm ein Bild verschieben?
Schreib Dir ne Routine, der Du die neuen Koordinaten uebergibst (und Handle zu Komponente, die geschoben wird).
In der Routine testet Du ab, ob eine gueltige Position erreicht wird:
Ja : Verschieben
Nein: Auf zulaessige Grenzwerte reduzieren und Positionieren oder ganz Ignorieren.
-
Ähh ist das nicht genau das was in der FAQ steht!?
Außerdem funktioniert das ja alles wie ich oben alles geschrieben hab...ähh und ja zur Laufzeit mein ich jetzt...
-
*schieb*
-
Bei mir geht das so:
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if (Shift.Contains(ssLeft)) { int XNew,YNew; XNew=Image1->Left+X-XOld; YNew=Image1->Top+Y-YOld; if ((XNew>0)&&(XNew<(Image1->Parent->ClientWidth-Image1->Width))) { Image1->Left=XNew; } if ((YNew>0)&&(YNew<(Image1->Parent->ClientHeight-Image1->Height))) { Image1->Top=YNew; } } } //--------------------------------------------------------------------------- void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { XOld=X; YOld=Y; } //--------------------------------------------------------------------------- XOld,XNew,YOld,YNew sind private Variablen in Form1.
-
Hmm ok in dem Fall funktioniert dein Code genauso gut wie der aus der FAQ...
Ich hätte vielleicht erwähnen müssen dass ich das in einer selber erstellten Klasse untergebracht hab... Hat jetzt jemand ne Idee?