移动TRichEdit Caretpos

时间:2011-06-01 06:48:54

标签: delphi richedit

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

我想在每次移动鼠标时移动护理位置。

像:

的OnMouseMove:   MoveCaretPos(X,Y);

1 个答案:

答案 0 :(得分: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;