anchor.diff:                end;
               end;
               FSelected := (FSelStartNo <> FSelEndNo) or (FSelStartOffs <> FSelEndOffs);
  -            //DrawVisible;
               Exit;
             end;
             if FSelected then
             begin
               FSelected := False;
  -            //DrawVisible;
  -            //DrawCaret(CaretPos.X, CaretPos.Y, True);
             end;
             if ssCtrl in ShiftState then
             begin
               CtrlKeyLeftKey;
  -            //DrawVisible;
  -            //DrawCaret(CaretPos.X, CaretPos.Y, True);
             end;
             FSelStartNo := CaretPos.Y;
             FSelStartOffs := CaretPos.X;
  
positive.code:               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;
  
negative.code:             begin
                if CaretPos.Y <= pred(FLines.Count) then
                begin
                  if (ssCtrl in ShiftState) and (CaretPos.Y > 0) then
                  begin
                    CaretPos.Y := CaretPos.Y - 1;
  