![]() |
Maus in TImage einsperren (Mäusefalle)
HiHo
Ich versuch grad die Maus mit ClipCursor() in ein TImage einzusperren. Als Parameter übergeb ich einfach ein TRect aber ich weiß nicht wie ich es am simplesten anstelle das Rec GENAU zu definieren :( Ich habs mit dem versucht:
Delphi-Quellcode:
Aber dann ist es nicht genau :(
rec.Left := form3.Left + image1.Left;
rec.Top := form3.top + image1.Top; rec.Right := form3.Left + image1.Left + image1.Width; rec.Bottom := form3.top + image1.Top + image1.Height; clipcursor(@rec); Also wie soll ich es machen? :angle:, sCrAPt |
Re: Maus in TImage einsperren (Mäusefalle)
Delphi-Quellcode:
Das müsste deine Lösung sein.
clipcursor(@Image1.ClientRect);
|
Re: Maus in TImage einsperren (Mäusefalle)
dann hab ich die größe aber nicht die position ;)
:angle:, sCrAPt |
Re: Maus in TImage einsperren (Mäusefalle)
@scrapt
Bei deiner Methode wird die Titelleiste nicht berücksichtigt. Entweder die Breite dieser berücksichtigen oder Titelleiste ausblenden:
Delphi-Quellcode:
bzw. mit clientheight, clientwidth arbeiten anstatt height und width.
form.borderstyle:=bsnone;
|
Re: Maus in TImage einsperren (Mäusefalle)
Ok, da hast du Recht, sorry, hatte einen Denkfehler. Aber was ist an deiner Methode so umständlich/ungenau? Das ganze musst du doch einfach in einem OnMove des Forms machen, ich sehe kein Problem dabei...
|
Re: Maus in TImage einsperren (Mäusefalle)
Die Titelleiste kann ja auch höher als normal sein ;) Aber ich denke, sowas steht in der Registry bestimmt irgendwo.
|
Re: Maus in TImage einsperren (Mäusefalle)
Für das Problem gibt es die Methode ClientToScreen, die Formularkoordinaten in Bildschirmkoordianten umwandelt:
Delphi-Quellcode:
var
P: TPoint; //... P.X := image1.Left; P.Y := image1.Top; P := Form1.ClientToScreen(P); rec.Left := P.X; rec.Top := P.Y; rec.Right := P.X + image1.Width; rec.Bottom := P.Y + image1.Height; |
Re: Maus in TImage einsperren (Mäusefalle)
Funktioniert :D Danke Niko und die anderen :D
:angle:, sCrAPt |
Re: Maus in TImage einsperren (Mäusefalle)
.... das ist nützlich
|
Re: Maus in TImage einsperren (Mäusefalle)
gut, dasses gelöst ist, aber würde nicht auch das funzen?
Delphi-Quellcode:
if mouse.x<Image1.left then mouse.x:=Image1.left;
if mouse.x>Image1.left+Image1.width then mouse.x:=Image1.left+Image1.width; if mouse.y<Image1.top then mouse.y:=Image1.top; if mouse.y>Image1.top+Image1.heigth then mouse.y:=Image1.top+Image1.heigth; //mouse.x/mouse.y musses irgendwo geben |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:15 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 by Thomas Breitkreuz