掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
マウスの左ボタンが押されているとCM_MouseLeaveが発生しない件 (ID:148964)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
いつもお世話になります。表記の件について質問させてください。 (簡単にするため、Memo1(TMemo)がalClientの状態で貼られたフォームで ご説明します。実際にはたくさんのコンポーネントが貼られていますが。) Memo1上でマウスをドラッグしている最中、Memo1や、Form自体の外 にマウスが出たことを検知するため、従来は次のメッセージ処理に頼って いました。(Delphi6の頃) procedure CMMouseLeave(var Msg: TMessage); message CM_MouseLeave; しかし、Delphi10.3+Windows10の環境の場合、マウスの左ボタンが押された 状態ですと、このメッセージは飛んでこないことが分かりました。 検索してみると、MouseMoveイベントで処理するとよい、との書き込みを 見つけましたので、試行錯誤の結果、暫定的に以下のように処理しようとして います。もし、CM_MouseLeaveを処理できる方法や、それに近いスムーズな 書き方などご存じの方がいらっしゃいましたらお教えいただけますでしょうか。 (コードの見通しをよくするため、従来と同様、CM_MouseLeaveのような メッセージ処理で判別できればありがたいと思っています。) お手間をおかけいたしますが、どうぞよろしくお願いいたします。 procedure TForm1.Memo1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var R: TRect; CP, P1, P2: TPoint; begin P1 := Memo1.ClientRect.TopLeft; P2 := Memo1.ClientRect.BottomRight; R := Rect(P1.X, P1.Y, P2.X, P2.Y); CP := TPoint.Create(X, Y); if PtInRect(R, CP) then Caption := 'In' else Caption := 'Out'; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.