ピクセル単位でカレットの位置を変更する方法はありますか?
マウスを動かすたびにケアPOSを動かしたいです。
お気に入り:
Onmousemove:MoveCaretPos(X、Y);
いいえ、キャレットの位置を特定のポイントに設定することはできません。代わりに、キャレットを文字位置に設定する必要があります。これを行うには、EM_CHARFROMPOS
メッセージを使用して指定したポイントに最も近い文字を取得し、返された値をSelStart
プロパティに設定する必要があります。
このサンプルを確認してください
procedure TForm1.RichEdit1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
APoint : TPoint;
Index : Integer;
begin
APoint := Point(X, Y);
Index := SendMessage(TRichEdit(Sender).Handle,EM_CHARFROMPOS, 0, Integer(@APoint));
if Index<0 then Exit;
TRichEdit(Sender).SelStart:=Index;
end;