移动TRichEdit的插入符位置

3

有没有一种方法可以以像素为单位更改插入符号位置?

我想要每次移动鼠标时都移动插入符号位置。

例如:

Onmousemove: MoveCaretPos(X, Y);


我希望你想要这样做有一个很好的理由。如果用户需要输入数据(类型),那就不要这样做,因为大多数人会移动鼠标到位置,点击,然后移开鼠标以便他们可以看到自己在做什么。 - mj2008
1个回答

7
不,您不能将光标设置在特定点上,而是必须将光标设置在字符位置上。要做到这一点,您必须使用 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;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接