Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Maus in TImage einsperren (Mäusefalle) (https://www.delphipraxis.net/21804-maus-timage-einsperren-maeusefalle.html)

sCrAPt 8. Mai 2004 13:43


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:
  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);
Aber dann ist es nicht genau :(

Also wie soll ich es machen?

:angle:, sCrAPt

alcaeus 8. Mai 2004 14:10

Re: Maus in TImage einsperren (Mäusefalle)
 
Delphi-Quellcode:
clipcursor(@Image1.ClientRect);
Das müsste deine Lösung sein.

sCrAPt 8. Mai 2004 14:15

Re: Maus in TImage einsperren (Mäusefalle)
 
dann hab ich die größe aber nicht die position ;)

:angle:, sCrAPt

gmarts 8. Mai 2004 14:19

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:
form.borderstyle:=bsnone;
bzw. mit clientheight, clientwidth arbeiten anstatt height und width.

alcaeus 8. Mai 2004 14:19

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...

Stanlay Hanks 8. Mai 2004 14:32

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.

Niko 8. Mai 2004 14:36

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;

sCrAPt 8. Mai 2004 14:51

Re: Maus in TImage einsperren (Mäusefalle)
 
Funktioniert :D Danke Niko und die anderen :D

:angle:, sCrAPt

Nicodius 8. Mai 2004 14:52

Re: Maus in TImage einsperren (Mäusefalle)
 
.... das ist nützlich

glkgereon 8. Mai 2004 17:47

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 08:29 Uhr.
Seite 1 von 2  1 2      

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