掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
リッチエディットコントロールのカーソル位置がマウスクリック位置になるようにするには?(Ⅱ) (ID:5180)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> Unit1とUnit2のフォームを作成して、Unit1に文字列が詰っているリッチエディットコントロールを配置しました。そして、Unit1のコードからUnit2をモードレスで表示しました。このとき、Unit2にフォーカスがあり、Unit1のリッチエディットコントロールをそのまま直接、マウスでクリックすると、Unit1のフォームは、フォーカスを持ってUnit2のフォームはUnit1の下にきますが、リッチエディットコントロールのカーソル位置は、マウスでクリックした位置にはこずに、前回の位置のままになってしまいます。なので、カーソル位置を変えるため、もう一度リッチエディットコントロールをクリックしなくてはならないのですが、このそのまま直接、フォーカスのないリッチエディットコントロールをクリックしても、クリックした位置にカーソルがくるようにするには、どのようなことをすればよいのですか? という質問で、 > procedure TForm1.FormActivate(Sender: TObject); > var > mpos: TPoint; > begin > GetCursorPos(mpos); > mpos := RichEdit1.ScreenToClient(mpos); > RichEdit1.Perform(WM_LBUTTONDOWN, 1, MakeLParam(mpos.X, mpos.Y)); > end; > ちなみに、 > RichEdit1.Perform(WM_LBUTTONDOWN, 1, MakeLParam(mpos.X, mpos.Y)); > は、 > RichEdit1.Perform(WM_LBUTTONDOWN, 0, 0); > でもOKでした。 > たぶん、WM_LBUTTONDOWNメッセージで、マウスの状態を取得しているんだと思います。 というご教授をしていただきました。結果、実現したかったことが大変うまく動作していて、前回はどうもありがとうございました。 少し使いつづけていたところ、同じアプリケーションの間での、フォームのフォーカスの移動の際には、フォーカスのないリッチエディットコントロールをクリックしても、クリックした位置にカーソルがくるようになりましたが、他アプリケーションからのフォーカスの移動の際には、FormActivateイベントが発生しないため、クリックした位置にカーソルがきませんでした。 他アプリケーションからのフォーカスの移動の際に発生するイベントにも、ご教授いただいたチップスを書き込めばよいのですが、他アプリケーションからのフォーカスの移動の際に発生するイベントが見当たらず、埒があきませんでした。このような場合はどのようにしたら良いのですか? どうかご教授お願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.