いつもお世話になります。
作者さんのHPで質問するかどうか迷ったのですが、作者さんが最近あまり
掲示板を覗いていらっしゃらないようでしたので、こちらで質問させていた
だきます。
フォームが2つあり、1つはTEditorが貼り付けてあるフォーム、もう一つが
入力作業を行うためのフォームで、ListBoxやEditが貼り付けてあります。
この入力作業を行うフォームで、特定の入力を行うと、TEditorに文字列が
自動で入力されていくのですが、TEditorが非アクティブになっているため、
キャレットが隠れてしまっていて、挿入位置が分かりにくくなってしまって
います。
そのため、非アクティブ状態であっても、キャレットを表示したいです。
どのようにすればよいでしょうか。
なお、ShowCaret等の命令があるのは分かったのですが、何回か実行して
みても、うまく表示できませんでした。
抜けてしまっていましたので、追記させてください。
TEditorは、有名なエディタコンポーネントのことで、本田さんという方が
作られたものです。次のURLで公開されています。
://homepage3.nifty.com/~katsuhiko/delphi.html
また、私が使用している環境は、Delphi6 + Windows XPです。
とりあえずダメ元で作者にメールしてみるのは手です。
シェアウエアですし、入金が可能なら返事も来ると思います。
私も遠い昔に使ったことがありますが、今はソースすらありませんので、確認はしてません。
非アクティブになったときにキャレットを消すという動作をしているはずなので。
HideCaretをコメントアウトすればキャレットは消えません。
WM_KILLFOCUSからHideCaretを探せば見つかるかと思いますよ。
あれから、この問題に集中してたので、ようやく解決できました。
>monaa様。
ヒントありがとうございました。
そのキーワードだけで全部の解決につながりました。
後はイベントがどの順番で処理されるのか、ShowMessageなどで
確認し、タイミングを間違わないように
CreateCaret, ShowCaret, HideCaret, DestroyCaretを実行する
だけでいけました。
ツイート | ![]() |