![]() |
Form schliessen wenn die Maus das Form verlässt.
Hallo Zusammen,
ich erzeuge zur Laufzeit eine Forminstanz und plaziere den Mauszeiger in der Mitte des Forms. Sobald nun der Mauszeiger das Form verläst soll das Form geschlossen werden. Das Form wird übrigens nicht Modal erzeugt sondern einfach mit Show. Hat jemand eine Idee? Gruß Kostas |
Re: Form schliessen wenn die Maus das Form verlässt.
Hallo,
du könntest mit getcursorpos() die aktuelle mausposition ermitteln und prüfen, ob sich das Ergebniss noch auf dem Formular befindet. Oder du fängst die WM_MouseMove (hieß die so?) ab, deren Parameter 0 ist, wenn sich der Cursor nicht auf dem Formular befindet. Florian |
Re: Form schliessen wenn die Maus das Form verlässt.
Moin!
Reagiere auf WM_MouseLeave bzw. CM_MouseLeave. MfG Muetze1 |
Re: Form schliessen wenn die Maus das Form verlässt.
Danke für die schnelle Antwort Muetze1 und Florian Bernd.
ich habe leider keine Ahnung wie ich ein Event erzeugen kann welches WM_Mouse... Botschaften des Forms behandelt. Ich habe es mit OnMouseMove probiert doch leider funkt es nicht wenn ich zu schnell die maus aus dem Form bewege. Die Koordinaten werde dann nicht aktualisiert. Könnte Ihr mir bitte verraten wie man so ein Event registriert? Herzlichen Dank nochmals Gruß Kostas |
Re: Form schliessen wenn die Maus das Form verlässt.
Ich glaub ungefähr so:
Delphi-Quellcode:
type
TForm1 = class(TForm) //Prozeduren und Objekte private { Private-Deklarationen } public { Public-Deklarationen } procedure WndProc(var Msg: TMessage); override; //... procedure TForm1.WndProc(var Msg: TMessage); var Point: TPoint; begin if Msg.Msg = WM_USER + 20 then begin if Msg.1Param = WM_MOUSELEAVE then FormX.Close; end; inherited; end; |
Re: Form schliessen wenn die Maus das Form verlässt.
Moin!
Delphi-Quellcode:
MfG
type
TForm1 = class(TForm) //Prozeduren und Objekte private { Private-Deklarationen } Procedure WMMouseLeave(Var Msg: TMessage); Message WM_MOUSELEAVE; public { Public-Deklarationen } //... procedure TForm1.WMMouseLeave(var Msg: TMessage); begin // Whatever you like to do... end; Muetze1 |
Re: Form schliessen wenn die Maus das Form verlässt.
sorry, aber so geht es nicht.
WMMouseLeave wird einfach nicht ausgeführt. Irgend eine Idee warum?
Delphi-Quellcode:
type
TForm1 = class(TForm) //Prozeduren und Objekte private { Private-Deklarationen } Procedure WMMouseLeave(Var Msg: TMessage); Message WM_MOUSELEAVE; public { Public-Deklarationen } //... procedure TForm1.WMMouseLeave(var Msg: TMessage); begin Form1.close; end; |
Re: Form schliessen wenn die Maus das Form verlässt.
Hi,
ändere
Delphi-Quellcode:
zu
Procedure WMMouseLeave(Var Msg: TMessage); Message WM_MOUSELEAVE;
Delphi-Quellcode:
Win32.API
Procedure WMMouseLeave(Var Msg: TMessage); Message CM_MOUSELEAVE;
|
Re: Form schliessen wenn die Maus das Form verlässt.
Moin!
CM_MOUSELEAVE wird von der Form selbst verschickt - und dann natürlich nicht an sich selber. Ich habe mit beiden Botschaften daneben gelegen, ich schau mal wodran es hapert... WM_MOUSELEAVE springt erst an, wenn ein anderes Fenster aktiviert wird... MfG Muetze1 |
Re: Form schliessen wenn die Maus das Form verlässt.
CM_MOUSELEAVE; funkt fast einwandfrei.
Wenn das Form leer ist funkt es einwandfrei mit CM_MOUSELEAVE. Fahre ich jedoch über ein Form1.label drüber, wird das form geschlossen. Ist es möglich das dieser event nur gefeuert wird wenn die Maus die Formgrenzen verlassen hat? Gruß Kostas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:45 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