ちょっと質問させてください。
リッチテキストボックスが1つあるだけのフォームがあります。
(裏側にはタイマーやコモンダイアログなどのコントロールは隠れています)
このリッチテキストボックスのキャレットをフォームがアクティブになった
とき(リッチテキストボックスにフォーカスが当たったとき)に
消したいのですが、GotFocusイベントプロシージャでHideCaretを実行する
やり方では消えてくれません。Clickに変えたりすると消えますので、
HideCaretの部分に問題はないと思うのですが。
あと、GotFocusで、文字を書かせたりしても書けますので、イベント自体は
ちゃんと動いています。何が悪いのでしょうか?
すみませんがよろしくお願いします。
HideCaretは、選択範囲が変わったときに行わないと、
なぜかすぐに無効になってしまうようです。
なので、GotFocusイベントではフラグをたてるだけにして、
それを見て、SelChangeイベントで、HideCaretを使ってみてください。
ところで気づいたんですけど、
ただひたすらSelChangeでHideCaretを呼ぶだけでもいいような気がしますから、
できたらそれだけでもいいかも…。
たかみちえさん、ありがとうございます。
で、SelChangeでやってみたのですが、最初の1回しか消えてくれません。
なぜでしょう??
> SelChangeでやってみたのですが、最初の1回しか消えてくれません。
そうですか…。わたしのときはそれでちゃんと消えたと記憶しているのですけど…。
もしかして、OSに依存していたのでしょうか?
疑問に思ったので、Googleでさがしてみましたけど、
WM_SETFOCUS(VBのリッチエディットのGotFocusに当たると思います)で、
HideCaretを複数回使って成功した人がいるようです。
ただ、HideCaretは使用回数が蓄積されるようなので、
表示するときも、おなじ回数ShowCaretを使わないと出てこないと思いますけど。
ありがとうございます。最悪なことに、開発用マシンが今日電源入らずという
状態に陥ってしまい、明日ドック入りしますので、返ってきたら試してみます。
2ヶ月間に2回の故障・・・ついてないです。
PCが返ってきたので早速試してみましたが、ダメでした。
結局、タイマーを組み合わせて何とか処理できましたので
それでやってます。根本的な解決にはなってませんが・・・
ありがとうございした。
ツイート | ![]() |