![]() |
Maus beschränken
Hi
Habe ein Problem und zwar beschränke ich meine Maus auf 3 Formblätter mi folgenden Code
Delphi-Quellcode:
da die Formblätter auf einen Externen Monitor angezeigt werden, wenn ich mir jetzt die Maus auf meinen internen Monitor wieder holen will schalte ich mir die Maus so wieder frei und ziehe sie mir auf meinen Monitor
procedure TForm8.FormShow(Sender: TObject);
Var maus :tRect; begin maus.Left:= Left; maus.Top:= Top; maus.Right:= Left + Width; maus.Bottom:= Top + Height; ClipCursor(@maus);
Delphi-Quellcode:
Mein Problem ist jetzt wie bekomm ich die Maus wieder zurück auf die 3 Formblätter
procedure TForm8.Button2Click(Sender: TObject);
begin ClipCursor(nil); end; Danke sascha |
Re: Maus beschränken
Indem du den Bereich wieder setzt?
Also ClipCursor erneut setzen:
Delphi-Quellcode:
Wenn du keinen doppelten Code haben willst, dann entweder dieses in eine Prozedur auslagern,
maus.Left:= Left;
... ClipCursor(@maus); oder falls sonst nichts Weiters in FormShow drin ist, dann kannst du dieses auch direkt aufrufen:
Delphi-Quellcode:
Die Maus wird dann ja auch wieder in diesen Bereich reingezungen.
FormShow(Sender);
|
Re: Maus beschränken
Ich muss dies aber von einer anderen Form machen und das geht so glaube ich nicht
|
Re: Maus beschränken
Wenn du die Unit dieser Form (von TForm8) in die andere einbindest, dann hast du dort auch Zugriff auf die andere Form (TForm8).
In der Unit existiert doch eine gloale Variable (Form8) ... über diese bekommst du Zugriff auf die öffentlichen Funktionen der Form (TForm8). z.B.:
Delphi-Quellcode:
Uses ..., Unit8;
Form8.FormShow(Sender); |
Re: Maus beschränken
Ich glaube ich stehe auf dem Schlauch weis leider nicht was du mir damit sagen willst
|
Re: Maus beschränken
Wenn du die Unit des Formulars in eine andere Unit einbindest, dann hast du von dort aus zugriff auf die öffentlichen Deklarationen der eingebundenen Unit.
Du kannst also ganz leicht auf auf eine andere Form zugreifen, solange du deren Unit da einbindest, von wo aus du darauf zugreifen willst. Daran ist doch wohl nichts schwer zu verstehen, oder? Weiterhin weißt du doch schon wie du die Maus auf deinen Forularen einsperrst? Das freigeben bekommst du ja auch schon hin. Und wie du die Maus danach wieder zurück auf die/das Formular(e) bekommst ist doch auch einfach ... du setzt einfach nochmal die entsprechende Beschränkung. Wenn du das nun mal gründlich durch deinen Kopf gehen läßt, dann sollten dir doch mindestens 2 Lösungen einfallen? :gruebel: 1: du rufst ClipCursor da auf, wo du grad im QuellCode bist und holst dir die Position der gewünschten Form,
Delphi-Quellcode:
2: oder du definierst dir in der Form eine Prozedur, welche den Bereich setzt und rufst diese dann einfach auf.
Uses ... Unit8;
maus.Left := Form8.Left; maus.Top := Form8.Top; maus.Right := Form8.Left + Form8.Width; maus.Bottom := Form8.Top + Form8.Height; ClipCursor(@maus);
Delphi-Quellcode:
Type TForm1 = Class(TForm)
... Public Procedure EinName; End; Procedure TForm8.EinName; Var maus: TRect; Begin maus.Left := Left; maus.Top := Top; maus.Right := Left + Width; maus.Bottom := Top + Height; ClipCursor(@maus); End;
Delphi-Quellcode:
//andere Unit
Uses ... Unit8; Form8.EinName; |
Re: Maus beschränken
Achso hast du das gemeint habe es nicht ganz verstanden.
Das sind ja Basics hab mal wieder zu kompliziert gedacht Dank dir aber trotzdem :-D |
Re: Maus beschränken
Tja, manchma isses halt einfacher, als man denkt.
Schlimmer isses nur, wenn man denkt es sei einfach und nachher fällt einem der Himmel auf'm Kopf :? |
Re: Maus beschränken
woran du denken solltest: Wenn man Strg + Alt + Entf drückt wird der gefangene Cursor auch wieder frei gelassen. Je nachdem was du mit dem einfangen des Cursors bezweckst gibt es eventuell andere Möglichkeiten dein Vorhaben zu realisieren.
|
Re: Maus beschränken
Kann es sein das es nicht funktioniert wenn die Eigenschaft Borderstyle der Form auf bsNone steht.
Zwar geht es beim ersten mal wenn die Form aufgerufen wird aber wenn ich die Beschränkung weg nehme und will sie dann wieder setzen geht es nicht. Bei anderen FormBlätter die bsSizeable sind funktioniert es aber dann auch. Gibt es vielleicht noch eine andere altenative die maus zu beschränken, die nicht soviel ärger macht |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 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