Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Maus auf einer Form einschränken! (https://www.delphipraxis.net/78886-maus-auf-einer-form-einschraenken.html)

smart 12. Okt 2006 15:30


Maus auf einer Form einschränken!
 
Hallo Alle!

Wie kann ich die Maus auf einer Form so einschränken, dass nicht mehr rauf oder runter geht? Links und rechts soll davon nicht betroffen sein.
Delphi-Quellcode:
If X < 0 then
  Mouse.CursorPos := Point(Top + Form1.Top + (Height- ClientHeight) div 2, Mouse.CursorPos.Y);
Klappt nicht. :-(

Gruß
Heike

Sunlight7 12. Okt 2006 15:33

Re: Maus auf einer Form einschränken!
 
Hello Heike,

am besten ClipCursor verwenden;

Beispiel:

Delphi-Quellcode:
// Einrichten
procedure TForm1.FormShow(Sender: TObject);
   var R:TRect;
begin
   r:=Bounds(0, Top, Screen.Width, Height);
   ClipCursor(@r);
end;

// Spuk beenden
procedure TForm1.FormHide(Sender: TObject);
begin
   ClipCursor(nil);
end;

Cöster 12. Okt 2006 15:51

Re: Maus auf einer Form einschränken!
 
Zitat:

Zitat von smart
Delphi-Quellcode:
If X < 0 then
  Mouse.CursorPos := Point(Top + Form1.Top + (Height- ClientHeight) div 2, Mouse.CursorPos.Y);

den Code versteh ich nicht? Warum X < 0? Außerdem fixierst du hier die x und nicht die y-Koordinate. Ist Top nicht das selbe wie Form1.Top?

Ich würde es entweder wie Sunlight meine mit ClipCursor machen, oder in FormMouseMove den y-Wert immer wieder auf eine Konstante setzen. Auf welcher Höhe soll der Cursor denn fixiert werden? In der Mitte des ClientBereichs der Form?

EDIT: @ Sunlight:
Bei dem Code kann sich die Maus aber doch weiterhin hoch und runter bewegen.

Sunlight7 12. Okt 2006 15:59

Re: Maus auf einer Form einschränken!
 
Also ich hab das so verstanden, als soll der Cursor nicht über und unter der Form sein können.

Falls ich mich irre:
Delphi-Quellcode:
// Einrichten
procedure TForm1.FormShow(Sender: TObject);
   var R:TRect;
begin
   r:=Bounds(0, Top+Height div 2, Screen.Width, 0);
   ClipCursor(@r);
end;

// Spuk beenden
procedure TForm1.FormHide(Sender: TObject);
begin
   ClipCursor(nil);
end;
:???:

Zitat:

Zitat von Sunlight7
Hello Heike

Deutsch sollte man können :stupid:

smart 12. Okt 2006 16:19

Re: Maus auf einer Form einschränken!
 
Zitat:

Zitat von Sunlight7
Hello Heike....

Das klappt ganz gut, vielen Dank, für Deine Mühe.
Ich habe das noch auf eine Form beschr.

Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
   var R:TRect;
begin
   r:=Bounds(Form1.Left, 400, Form1.Width, 4);
   ClipCursor(@r);
end;
Auch Dank an alle Anderen.

Gruß
Heike


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

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