Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Form schliessen wenn die Maus das Form verlässt. (https://www.delphipraxis.net/47089-form-schliessen-wenn-die-maus-das-form-verlaesst.html)

Kostas 6. Jun 2005 15:18


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

Zacherl 6. Jun 2005 15:30

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

Muetze1 6. Jun 2005 15:34

Re: Form schliessen wenn die Maus das Form verlässt.
 
Moin!

Reagiere auf WM_MouseLeave bzw. CM_MouseLeave.

MfG
Muetze1

Kostas 6. Jun 2005 15:59

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

malo 6. Jun 2005 16:05

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;

Muetze1 6. Jun 2005 16:07

Re: Form schliessen wenn die Maus das Form verlässt.
 
Moin!

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
  // Whatever you like to do...
end;
MfG
Muetze1

Kostas 6. Jun 2005 16:40

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;

Win32.API 6. Jun 2005 16:45

Re: Form schliessen wenn die Maus das Form verlässt.
 
Hi,
ändere
Delphi-Quellcode:
Procedure WMMouseLeave(Var Msg: TMessage); Message WM_MOUSELEAVE;
zu
Delphi-Quellcode:
Procedure WMMouseLeave(Var Msg: TMessage); Message CM_MOUSELEAVE;
Win32.API

Muetze1 6. Jun 2005 16:53

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

Kostas 6. Jun 2005 17:24

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 04:52 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