マウスがフォーム上から外れたときの判定

解決


らん  2014-02-08 00:27:37  No: 46011

マウスカーソルがフォーム上から外れたときに、
フォームを非表示にしたいです。

procedure TForm1.FormMouseLeave(Sender: TObject);
begin
  Visible := False;
end;

とすることで、そのように動きます。
しかし、フォォーム上のボタンの上をマウスが通っただけでも、
FormMouseLeave  が処理されてしまいます。

何か良い方法はないでしょうか。
よろしくお願いいたします。

(delphi  XE5 starter)


deldel  2014-02-08 01:39:11  No: 46012

もっと格好良い方法があるとは思いますが、単純な方法として...

procedure TForm1.FormMouseLeave(Sender: TObject);
var
  P: TPoint;
begin
  sleep(100); //これを入れないと反応しなかった・・・
  GetCurSorPos(P);

  if (Left > P.X) or (P.X > Left + Width) or (Top > P.Y) or (P.Y > Top + Height) then
    Visible := False;
end;


らん  2014-02-08 04:17:48  No: 46013

deldelさん
十分格好いいです!
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加