anchor.diff:  begin
     if FLines.Count = 0 then
       Exit; //==>
  -  if (I < 0) or (I > FLines.Count-1) then
  +  if (ALineIndex < 0) or (ALineIndex > FLines.Count-1) then
       Exit; //==>
  -  S := FLines[I];
  +  S := FLines[ALineIndex];
     if Pos(#9, S) > 0 then
     begin
       CorrectS := '';
  
positive.code:           else
              SS := UTF8Copy(S, Si + 1, Ei - Si);
            R.SetRect(X+(Si * FChrW), Y, (UTF8Length(SS) * FChrW), FChrH);
            Canvas.XORFillRectangle(fpgColorToRGB(clSelection) xor $FFFFFF, R);
          end
          else
          begin
            if (I = StartNo) and (I < EndNo) then
            begin
              SS := UTF8Copy(S, Si + 1, UTF8Length(S) - Si);
              R.SetRect(X+(Si * FChrW), Y, (UTF8Length(SS) * FChrW), FChrH);
              Canvas.XORFillRectangle(fpgColorToRGB(clSelection) xor $FFFFFF, R);
            end
            else
            begin
              if (I > StartNo) and (I = EndNo) then
              begin
                if Ei > UTF8Length(S) then
                  Ei := UTF8Length(S);
                SS := UTF8Copy(S, 1, Ei);
                R.SetRect(X, Y, (UTF8Length(SS) * FChrW), FChrH);
                Canvas.XORFillRectangle(fpgColorToRGB(clSelection) xor $FFFFFF, R);
              end;
            end;
          end;
        end;
      end; { if FSelected... }
    end;  { if AllowDraw... }
  
    if UTF8Length(S) > FMaxScrollH then
    begin
  
negative.code:   end;
  end;
  
  procedure TfpgBaseTextEdit.DrawLine(const ALineIndex, Y: Integer);
  var
    X: Integer;
    GSz: Integer;
  