移动TRichEdit Caretpos

XBa*_*000 3 delphi richedit

有没有办法改变像素中的插入位置?

每当我移动鼠标鼠标时,我想移动护理pos.

喜欢:

Onmousemove:MoveCaretPos(X,Y);

RRU*_*RUZ 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;
Run Code Online (Sandbox Code Playgroud)