キャレットの幅を変更する

キャレットは通常縦長の|こんな形状ですが CreateCaret APIで幅を引数すれば四角のキャレットを作成できます。以下のサンプルはキャレットの幅を大きくします。RichEditなどの場合は SelectionChangeイベントに記述しないとすぐに元に戻ります。

■ キャレットの幅を変更する例
  procedure TForm1.RichEdit1SelectionChange(Sender: TObject);
  begin
    CreateCaret(RichEdit1.Handle,0,32,Abs(RichEdit1.Font.Height));
    ShowCaret(RichEdit1.Handle); { ~~幅   ~~~~~~~~~~~~~~~~~~~~~高さ } 
  end;

また、第2引数にビットマップのハンドルを渡せばキャレットがグラフィックになります。この場合 幅と高さは無視されます。

■ キャレットをグラフィックにする例
  procedure TForm1.RichEdit1SelectionChange(Sender: TObject);
  begin
    CreateCaret(RichEdit1.Handle,Image1.Picture.Bitmap.Handle,0,0)); 
    ShowCaret(RichEdit1.Handle);
  end;