diff --git a/components/tvplanit/source/vpganttview.pas b/components/tvplanit/source/vpganttview.pas index b5734dcce..809d9e0e4 100644 --- a/components/tvplanit/source/vpganttview.pas +++ b/components/tvplanit/source/vpganttview.pas @@ -884,12 +884,25 @@ end; function TVpGanttView.GetNumMonths: Integer; var dm1, dm2: Integer; + y1, m1, d1: Word; + y2, m2, d2: Word; begin if (FStartDate <> NO_DATE) then begin + DecodeDate(FStartDate, y1, m1, d1); + DecodeDate(FEndDate, y2, m2, d2); + if (y1 = y2) then + Result := m2 - m1 + 1 + else + Result := 13 - m1 + m2 + (y2 - y1 - 1)*12; + { + else + Result := (y2 - y1 - 1) * 12; dm1 := trunc(StartOfTheMonth(FStartDate)); - dm2 := trunc(StartOfTheMonth(FEndDate)); + dm2 := trunc(StartOfTheMonth(FEndDate)) + 1; + writeln(datetostr(dm1), ' ', datetostr(dm2)); Result := MonthsBetween(dm1, dm2) + 1; + } end else Result := 0; end; @@ -1268,24 +1281,34 @@ begin x1 := FixedColWidth; y1 := 0; y2 := FTotalColHeaderHeight; - dm := FStartDate; - for i := 0 to n - 1 do + + if n > 1 then begin - if i = 0 then begin - nDays := DaysInMonth(dm) - DayOf(dm) + 1; - dm := StartOfTheMonth(dm); - end else - if i = n-1 then - nDays := DayOf(FEndDate) - else - nDays := DaysInMonth(dm); - if dm + nDays > FEndDate then - nDays := trunc(FEndDate) - trunc(dm) + 1; + dm := FStartDate; + for i := 0 to n - 1 do + begin + if i = 0 then begin + nDays := DaysInMonth(dm) - DayOf(dm) + 1; + dm := StartOfTheMonth(dm); + end else + if i = n-1 then + nDays := DayOf(FEndDate) + else + nDays := DaysInMonth(dm); + if dm + nDays > FEndDate then + nDays := trunc(FEndDate) - trunc(dm) + 1; + x2 := x1 + nDays * ColWidth; + FMonthRecords[i].Rect := Rect(x1, y1, x2, y2); + FMonthRecords[i].Date := dm; + dm := IncMonth(dm, 1); + x1 := x2; + end; + end else + begin + nDays := DayOf(FEndDate) - DayOf(FStartDate) + 1; x2 := x1 + nDays * ColWidth; - FMonthRecords[i].Rect := Rect(x1, y1, x2, y2); - FMonthRecords[i].Date := dm; - dm := IncMonth(dm, 1); - x1 := x2; + FMonthRecords[0].Rect := Rect(x1, y1, x2, y2); + FMonthRecords[0].Date := FStartDate; end; end;