anchor.diff:  
       PaintVerticalLines(aCanvas, aRect);
       PaintHorizontalLines(aCanvas, aRect);
  +
     finally
       aCanvas.Unlock;
     end;
  +end;
  +
  +procedure TmGantt.DoForEveryRow(aCanvas: TCanvas; const aDrawingRect: TRect; aDrawingAction: TmGanttRowDrawingAction);
  +var
  +  i, k, limit : integer;
  +  rowRect : TRect;
  +begin
  +  limit := FHead.DataProvider.RowCount - FHead.TopRow;
  +
  +  rowRect := aDrawingRect;
  +  rowRect.Bottom:= aDrawingRect.Top + FHead.RowHeight -1;
  +  k := 0;
  +  while (rowRect.Bottom < aDrawingRect.Bottom) and (k < limit) do
  +  begin
  +    aDrawingAction(aCanvas, rowRect);
  +
  +    rowRect.Top := rowRect.Bottom + 1;
  +    rowRect.Bottom := rowRect.Bottom + FHead.RowHeight;
  +    inc(k);
  +  end;
  +
  +end;
  +
  +procedure TmGantt.DrawRowBottomLine(aCanvas: TCanvas; const aDrawingRect: TRect);
  +begin
  +  aCanvas.MoveTo(aDrawingRect.Left, aDrawingRect.Bottom);
  +  aCanvas.LineTo(aDrawingRect.Right, aDrawingRect.Bottom);
   end;
   
   procedure TmGantt.Paint;
  
positive.code:     procedure PaintHorizontalLines (aCanvas : TCanvas; const aDrawingRect : TRect);
      procedure SetTopRow(AValue: integer);
      procedure DoPaintTo(aCanvas: TCanvas; aRect: TRect);
    protected
      procedure Paint; override;
    public
  
negative.code:   mTimeruler, mGanttDataProvider, mGanttHead;
  
  type
  
    TmGanttRowDrawingAction = procedure (aCanvas : TCanvas; const aDrawingRect : TRect) of object;
  
    { TmGantt }
  
  