问题
is there a way to change the caret position in pixel?
i would like to move the care pos everytime i move the mouse mouse.
like:
Onmousemove: MoveCaretPos(X, Y);
回答1:
No, you cannot set the position of the caret in a specific point, instead you must set the caret in a character position. To do this you must use the EM_CHARFROMPOS message to retrieve the closest character to a specified point and then set the value returned to the SelStart property.
Check this sample
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;
来源:https://stackoverflow.com/questions/6197305/move-trichedit-caretpos