Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mauszeiger ausblenden (https://www.delphipraxis.net/13627-mauszeiger-ausblenden.html)

ninja 22. Dez 2003 20:39


Mauszeiger ausblenden
 
hallo,
gibt es die möglichkeit die maus ausserhalb eines panels auszublenden, oder die mausposition nur auf das panel zubegrenzen??
gruß ninja

phlux 22. Dez 2003 21:03

Re: Mauszeiger ausblenden
 
Joah das geht ;)
Das einfangen des Cursors jetz.

Also zuerst musst du dirn Rect erstellen in dem der Mauszeiger eingesperrt werden soll, das erstellen wir mit der Maße und der Position eines Panels (Panel1):
Delphi-Quellcode:
var
  aRect: TRect;

//Jetz zum einsperren:
begin
  with aRect do
  begin
    Left := Panel1.Left;
    Top := Panel1.Top;
    Right := Panel1.Left + Panel1.Width;
    Bottom := Panel1.Top + Panel1.Height;
  end;
  ClipCursor(@aRect);
end;

//Jetz zum freilassen
begin
  ClipCursor(nil);
end;
Löls* einfach mal so runtergehackt, keine Garantie obs fehlerfrei ist, falls es Prob oder Frage gibt einfach fragen ;)

mfg phlux :hi:

Florian H 22. Dez 2003 21:14

Re: Mauszeiger ausblenden
 
Oder wenn du den Mauszeiger ausblenden willst, machst du panel1.cursor := crNone; :zwinker:

phlux 22. Dez 2003 21:25

Re: Mauszeiger ausblenden
 
Er will es aber ausserhalb des Panels ausblenden lassen :zwinker:

ninja 22. Dez 2003 22:15

Re: Mauszeiger ausblenden
 
Zitat:

Zitat von phlux
Joah das geht ;)
Das einfangen des Cursors jetz.

Also zuerst musst du dirn Rect erstellen in dem der Mauszeiger eingesperrt werden soll, das erstellen wir mit der Maße und der Position eines Panels (Panel1):
Delphi-Quellcode:
var
  aRect: TRect;

//Jetz zum einsperren:
begin
  with aRect do
  begin
    Left := Panel1.Left;
    Top := Panel1.Top;
    Right := Panel1.Left + Panel1.Width;
    Bottom := Panel1.Top + Panel1.Height;
  end;
  ClipCursor(@aRect);
end;

//Jetz zum freilassen
begin
  ClipCursor(nil);
end;
Löls* einfach mal so runtergehackt, keine Garantie obs fehlerfrei ist, falls es Prob oder Frage gibt einfach fragen ;)

mfg phlux :hi:

hallo, danke für die schnelle antwort.
ich habe diesen code in meinem 2.formular eingebaut in FormCreate.
es schein zufunktionieren, allerdings auch auf dem 1.Formular, was zuerst gestartet wird.
und das mit dem freilassen hab ich nicht ganz verstanden.
gruß ninja

phlux 23. Dez 2003 15:02

Re: Mauszeiger ausblenden
 
Zitat:

Zitat von ninja
hallo, danke für die schnelle antwort.
ich habe diesen code in meinem 2.formular eingebaut in FormCreate.
es schein zufunktionieren, allerdings auch auf dem 1.Formular, was zuerst gestartet wird.

Hi!
Also du musst dir das ganze so vorstellen das wir mit diesem Rect ein unsichtbares Rechteck erzeugen was eigentlich willkürlich auf dem Bildschirm liegen kann. Wir erzeugen jetzt dieses Rechteck an der Position deines Panels mit genau den gleichen Werten für die Breite und die Höhe, es sieht also so aus also ob der Mauszeiger in dem Panel gefangen ist, in wirklichkeit ist er jedoch im Rechteck gefangen. Was genau auf dem Panel liegt.
Das der Mauszeiger bereits beim erstellen von Form1 in unserem Rechteck gefangen ist liegt vermutlich daran das du die Prozedur zum einsperren im OnCreate deiner 2ten Form reingepackt hast. Da beide Forms, so denke ich, beim starten deines Progs erzeugt werden wird auch der OnCreate Code deiner 2ten Form beim starten ausgeführt, richtig wäre es wohl den Code zum einsperren des Zeigers in dem OnShow Event deiner 2ten Form unterzubringen.
Zitat:

und das mit dem freilassen hab ich nicht ganz verstanden.
Was genau hast du daran nicht verstanden? Also Du hebst damit einfach nur die Einschränkung wie weit sich der MZ bewegen kann wieder auf. Am besten ist es wenn du diesen Event in den OnHide Event deiner 2ten Form schreibst damit du den Mauszeiger beim Verstecken deiner 2ten Form wieder ganz nutzen kannst ;) .

mfg phlux :hi:

ninja 23. Dez 2003 16:12

Re: Mauszeiger ausblenden
 
hallo,
danke nochmal.
ich hatte nicht verstanden welchem ereignis ich das freilassen zuordnen mußte.
ich hatte natürlich alles dem formcreate zugeordnet, jetzt habe ich es so gemacht wie du gesagt hast, und es funktioniert.
thx ninja :thuimb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 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-2025 by Thomas Breitkreuz