anchor.diff:    if (btnstate and MOUSE_LEFT) = 0 then
       Exit;
       
  -  cp := CursorPosToCharPos(x, y);
  +  cp := PointToCharPos(x, y);
   
     //FMouseDragPos := cp;
     FSelOffset := cp - FSelStart;
     if FCursorPos <> cp then
     begin
       FCursorPos := cp;
  -    AdjustCursor;
  +    AdjustVisibleText;
       Repaint;
     end;
   end;
  
positive.code:   FCursorPos        := UTF8Length(FText);
    FSelStart         := FCursorPos;
    FSelOffset        := 0;
    FDrawOffset       := 0;
    FPasswordMode     := False;
    FBorderStyle      := bsDefault;
    FPopupMenu        := nil;
  
negative.code:   if not consumed then
    begin
      // Handle only printable characters
      // UTF-8 characters beyond ANSI range are supposed to be printable
      if ((Ord(AText[1]) > 31) and (Ord(AText[1]) < 127)) or (Length(AText) > 1) then
      begin
        if (FMaxLength <= 0) or (UTF8Length(FText) < FMaxLength) then
  