anchor.diff:                FSelEndOffs := CaretPos.X;
               end;
               FSelected := (FSelStartNo <> FSelEndNo) or (FSelStartOffs <> FSelEndOffs);
  -//            DrawVisible;
               Exit;
             end;
             if FSelected then
             begin
               FSelected := False;
  -//            DrawVisible;
  -//            DrawCaret(CaretPos.Y, CaretPos.X, True);
             end;
             if ssCtrl in ShiftState then
             begin
               CtrlKeyRightKey;
  -//            DrawVisible;
             end;
  -//          DrawCaret(CaretPos.Y, CaretPos.X, True);
             FSelStartNo := CaretPos.Y;
             FSelStartOffs := CaretPos.X;
           end;
  
positive.code:             FMaxScrollH := FMaxScrollH + 2;
              UpdateScrollBars;
            end;
  //          if CaretPos.x <= pred(FLines.Count) then
  //          begin
  //            GliphY := (CaretPos.x - FTopLine) * FChrH;
  //            DrawLine(Canvas, CaretPos.x, GliphY);
  //          end;
            if ssShift in ShiftState then
            begin
              if not FSelected then
  
negative.code:                   begin
                      FSelEndNo := CaretPos.Y;
                      FSelEndOffs := CaretPos.X;
                    end;
                    Exit;
                  end;
                end;
                CaretPos.Y := CaretPos.Y - 1;
                CaretPos.X := Length(FLines[CaretPos.Y]);
              end
              else
              begin
                CaretPos.X := 0;
              end;
            end;
            if ssShift in ShiftState then
            begin
              if not FSelected then
  