TCanvas 要素と組み合わせた Windows API を使用して、Delphi で高度なテキスト エディター コンポーネント (固定幅、構文の強調表示など) を作成しました。 TEdit などのキャレットも表示する同じアプリケーションが、エディター コンポーネントからフォーカスを盗んでいます。新しいエディター (TEdit など) のキャレットは表示されません。代わりに、エディター コンポーネント内でキャレットが移動します。たとえば、新しいエディター (TEdit) で文字を書くと、期待どおりに表示され、キャレットがコンポーネント内で右に移動します。何が原因でしょうか? Win API のキーボード フォーカスの処理と VCL の処理の間に競合があると思われます。私のエディター コンポーネントでは、WM_SETFOCUS に応答して CreateCaret を使用し、WM_KILLFOCUS に応答して DestroyCaret を使用します。
1165 次