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