Einzelnen Beitrag anzeigen

Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Form schließen wenn Mauszeiger d.Form verläßt ?

  Alt 24. Jun 2004, 00:41
Der Fehler liegt hier:
Zitat von Vader:
Code:
procedure TForm2.FormCreate(Sender: TObject);
Im FormCreate nützt die der Code rein garnichts, da diese Prozedur nur dann, und ein einziges Mal ausgeführt wird, wenn das Formular erzeugt wird.
Ein OnMouseMove wird dir auch nichts bringen, da diese Message schon nicht mehr bei dir ankommt, sobald die Maus eben dein Fenster verlassen hat (Wie passend ).
Also bleiben dir 2 Möglichkeiten:
a) Du implementierst die Behandlung der Message WM_MOUSELEAVE
b) Ein Timer der alle n Millisekunden die Position der Maus überprüft:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  mouseCoords: TPoint;
begin
  GetCursorPos(mouseCoords);
  if (mouseCoords.x < Form1.Left) or
    (mouseCoords.y < Form1.Top) or
    (mouseCoords.x > Form1.Left+Form1.Width) or
    (mouseCoords.y > Form1.Top+Form1.Height) then
      Form1.Close;
end;
Lösung b) erscheint einfacher, ist aber deutlich "unsauberer". Hinter die Umsetzung der Variante a) muss man erst durchsteigen, aber die ist dann solide. Aber b) reicht prinzipiell aus


n8i,
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat