anchor.diff:            if not (ssShift in ShiftState) and not (ssCtrl in ShiftState) then
             begin
               CaretPos.Y := CaretPos.Y + 1;
  -            if FSelected then
  +            // scroll text
  +            if FVScrollBar.Visible and (CaretPos.Y > FTopLine+FVisLines-2) then
  +              FVScrollBar.LineDown;
  +              if FSelected then
               begin
                 FSelected := False;
                 Exit;
  
positive.code:           if not (ssShift in ShiftState) and not (ssCtrl in ShiftState) then
            begin
              CaretPos.Y := CaretPos.Y - 1;
              if FSelected then
              begin
                FSelected := False;
  
negative.code:   else if CaretPos.X < HPos then
      ScrollPos_H := CaretPos.X;
  
    if CaretPos.Y < (FTopLine+1) then
      ScrollPos_V := CaretPos.Y
    else if CaretPos.Y > (FTopLine + FVisLines - 2) then
      ScrollPos_V := CaretPos.Y - FVisLines + 2;
  
    Invalidate;
  end;
  
  procedure TfpgBaseTextEdit.HandleKeyChar(var AText: TfpgChar;
  