diff --git a/components/tvplanit/packages/laz_visualplanit.lpk b/components/tvplanit/packages/laz_visualplanit.lpk index 416968d24..e2843a065 100644 --- a/components/tvplanit/packages/laz_visualplanit.lpk +++ b/components/tvplanit/packages/laz_visualplanit.lpk @@ -32,7 +32,7 @@ Portions created by TurboPower Software Inc. are Copyright (C) 2002 TurboPower S Contributor(s): "/> - + @@ -302,6 +302,10 @@ Contributor(s): "/> + + + + diff --git a/components/tvplanit/source/vpbasepainter.pas b/components/tvplanit/source/vpbasepainter.pas new file mode 100644 index 000000000..432831c37 --- /dev/null +++ b/components/tvplanit/source/vpbasepainter.pas @@ -0,0 +1,59 @@ +unit VpBasePainter; + +interface + +uses + Classes, Graphics, + VPBase; + +type + + { TVpBasePainter } + + TVpBasePainter = class + protected + // Buffered input parameters + RenderCanvas: TCanvas; + Angle: TVpRotationAngle; + Scale: Extended; + RenderDate: TDateTime; + RenderIn: TRect; + StartLine: Integer; + StopLine: Integer; + UseGran: TVpGranularity; + DisplayOnly: Boolean; + public + constructor Create(ARenderCanvas: TCanvas); + procedure RenderToCanvas(ARenderIn: TRect; AAngle: TVpRotationAngle; + AScale: Extended; ARenderDate: TDateTime; AStartLine, AStopLine: Integer; + AGranularity: TVpGranularity; ADisplayOnly: Boolean); virtual; + end; + +implementation + +{ TBasePainter } + +constructor TVpBasePainter.Create(ARenderCanvas: TCanvas); +begin + RenderCanvas := ARenderCanvas; +end; + +procedure TVpBasePainter.RenderToCanvas(ARenderIn: TRect; + AAngle: TVpRotationAngle; AScale: Extended; ARenderDate: TDateTime; + AStartLine, AStopLine: Integer; AGranularity: TVpGranularity; + ADisplayOnly: Boolean); +begin + // Buffer parameters + RenderIn := ARenderIn; + Angle := AAngle; + Scale := AScale; + RenderDate := ARenderDate; + StartLine := AStartLine; + StopLine := AStopLine; + UseGran := AGranularity; + DisplayOnly := ADisplayOnly; + + // call the old RenderToCanvas method here... +end; + +end. diff --git a/components/tvplanit/source/vpdayviewpainter.pas b/components/tvplanit/source/vpdayviewpainter.pas index ef31aba9a..8a427b521 100644 --- a/components/tvplanit/source/vpdayviewpainter.pas +++ b/components/tvplanit/source/vpdayviewpainter.pas @@ -6,7 +6,7 @@ interface uses SysUtils, LCLType, LCLIntf, Types, - Classes, Graphics, VpConst, VPBase, VpData, VpDayView; + Classes, Graphics, VpConst, VPBase, VpData, VpBasePainter, VpDayView; type { Defines matrix of event records for managing how events overlap with each other. } @@ -21,19 +21,9 @@ type TVpDvEventArray = array of TVpDvEventRec; - TVpDayViewPainter = class + TVpDayViewPainter = class(TVpBasePainter) private FDayView: TVpDayView; - // Buffered input parameters - FRenderCanvas: TCanvas; - FAngle: TVpRotationAngle; - FScale: Extended; - FRenderDate: TDateTime; - FRenderIn: TRect; - FStartLine: Integer; - FStopLine: Integer; - FUseGran: TVpGranularity; - FDisplayOnly: Boolean; // local parameters of the old render procedure TextWidth: Integer; ColHeadRect: TRect; @@ -73,12 +63,6 @@ type RealADEventBkgColor: TColor; ADEventAttrBkgColor: TColor; ADEventBorderColor: TColor; - // Aliases of protected TVpDayview elements - dvActiveEventRec: TRect; - dvColRectArray: TVpColRectArray; - dvEventArray: TVpEventArray; - dvLineMatrix: TVpLineMatrix; - dvInPlaceEditor: TVpDvInPlaceEdit; // variables from local procedures for better access dvBmpRecurring: TBitmap; dvBmpCategory: TBitmap; @@ -93,18 +77,6 @@ type CustomW: Integer; CustomH: Integer; - protected - // Buffered input parameters as properties - property Angle: TVpRotationAngle read FAngle; - property DisplayOnly: Boolean read FDisplayOnly; - property RenderCanvas: TCanvas read FRenderCanvas; - property RenderDate: TDateTime read FRenderDate write FRenderDate; - property RenderIn: TRect read FRenderIn; - property Scale: Extended read FScale; - property StartLine: Integer read FStartLine write FStartLine; - property StopLine: Integer read FStopLine; - property UseGran: TVpGranularity read FUseGran; - protected function CountOverlappingEvents(Event: TVpEvent; const EArray: TVpDvEventArray): Integer; procedure CreateBitmaps; @@ -127,7 +99,7 @@ type constructor Create(ADayView: TVpDayview; ARenderCanvas: TCanvas); procedure RenderToCanvas(ARenderIn: TRect; AAngle: TVpRotationAngle; AScale: Extended; ARenderDate: TDateTime; AStartLine, AStopLine: Integer; - AUseGran: TVpGranularity; ADisplayOnly: Boolean); + AUseGran: TVpGranularity; ADisplayOnly: Boolean); override; end; @@ -141,13 +113,8 @@ type constructor TVpDayViewPainter.Create(ADayView: TVpDayView; ARenderCanvas: TCanvas); begin + inherited Create(ARenderCanvas); FDayView := ADayView; - FRenderCanvas := ARenderCanvas; - dvActiveEventRec := TVpDayViewOpener(FDayView).dvActiveEventRec; - dvColRectArray := TVpDayViewOpener(FDayView).dvColRectArray; - dvEventArray := TVpDayViewOpener(FDayView).dvEventArray; - dvInPlaceEditor := TVpDayViewOpener(FDayView).dvInplaceEditor; - dvLineMatrix := TVpDayViewOpener(FDayView).dvLineMatrix; end; function TVpDayViewPainter.CountOverlappingEvents(Event: TVpEvent; @@ -388,13 +355,14 @@ begin EventStr ); - dvEventArray[EventCount].Rec := Rect( + TVpDayViewOpener(FDayView).dvEventArray[EventCount].Rec := Rect( ADEventRect.Left, ADEventRect.Top - 2, ADEventRect.Right - TextMargin, ADEventRect.Bottom ); - dvEventArray[EventCount].Event := Event; + TVpDayViewOpener(FDayView).dvEventArray[EventCount].Event := Event; + Inc(EventCount); end; end; { for I2 := 0 to pred(ADEventsList.Count) do ... } @@ -455,8 +423,8 @@ begin CellsRect.Right := CellsRect.Right + ExtraSpace; { set the ColRectArray } - dvColRectArray[RealDay].Rec := CellsRect; - dvColRectArray[RealDay].Date := RenderDate + i; + TVpDayViewOpener(FDayView).dvColRectArray[RealDay].Rec := CellsRect; + TVpDayViewOpener(FDayView).dvColRectArray[RealDay].Date := RenderDate + i; { Draw the cells } if Assigned(FDayView.OwnerDrawCells) then begin @@ -503,10 +471,12 @@ begin TPSLineTo(RenderCanvas, Angle, RenderIn, GutterRect.Right, GutterRect.Bottom); for I := 0 to FDayView.LineCount - 1 do begin // wp: was withoug -1 - dvLineMatrix[Col, I].Rec.Left := -1; - dvLineMatrix[Col, I].Rec.Top := -1; - dvLineMatrix[Col, I].Rec.Right := -1; - dvLineMatrix[Col, I].Rec.Bottom := -1; + with TVpDayViewOpener(FDayView) do begin + dvLineMatrix[Col, I].Rec.Left := -1; + dvLineMatrix[Col, I].Rec.Top := -1; + dvLineMatrix[Col, I].Rec.Right := -1; + dvLineMatrix[Col, I].Rec.Bottom := -1; + end; end; SavedFont := TFont.Create; @@ -534,7 +504,7 @@ begin LineRect.Top := Round (R.Top + (i * RealRowHeight)); LineRect.Bottom := Round (LineRect.Top + (RealRowHeight)); if I + StartLine < FDayView.LineCount then - dvLineMatrix[Col, I + StartLine].Rec := LineRect; + TVpDayViewOpener(FDayView).dvLineMatrix[Col, I + StartLine].Rec := LineRect; { color-code cells } @@ -585,7 +555,7 @@ begin { there is an active range defined, so we need to see if } { the current line falls in the active range or not, and } { paint it accordingly } - LineStartTime := dvLineMatrix[Col, StartLine + I].Time; + LineStartTime := TVpDayViewOpener(FDayView).dvLineMatrix[Col, StartLine + I].Time; if TimeInRange(LineStartTime, FDayView.TimeSlotColors.ActiveRange.StartTime, FDayView.TimeSlotColors.ActiveRange.EndTime - (1/MinutesInDay), true) @@ -731,20 +701,6 @@ var EventArray: TVpDvEventArray; EventList: TList; IconRect: TRect; - { - dvBmpRecurring: TBitmap; - dvBmpCategory: TBitmap; - dvBmpAlarm: TBitmap; - dvBmpCustom: TBitmap; - RecurringW: Integer; - RecurringH: Integer; - CategoryW: Integer; - CategoryH: Integer; - AlarmW: Integer; - AlarmH: Integer; - CustomW: Integer; - CustomH: Integer; - } {$IFDEF DEBUGDV} SL : TStringList; {$ENDIF} @@ -919,20 +875,21 @@ begin OldBrush := TBrush.Create; try { get a rectangle of the visible area } - VisibleRect := dvLineMatrix[Col, StartLine].Rec; + VisibleRect := TVpDayViewOpener(FDayView).dvLineMatrix[Col, StartLine].Rec; VisibleRect.Bottom := FDayView.ClientRect.Bottom; - STime := dvLineMatrix[0, StartLine].Time; - ETime := dvLineMatrix[0, StartLine + RealVisibleLines].Time; + STime := TVpDayViewOpener(FDayView).dvLineMatrix[0, StartLine].Time; + ETime := TVpDayViewOpener(FDayView).dvLineMatrix[0, StartLine + RealVisibleLines].Time; LineDuration := GetLineDuration(FDayView.Granularity); { Determine how much time is represented by one pixel. It is the } { amount of time represented by one line, divided by the height of } { a line in pixels. } - if (dvLineMatrix[Col, StartLine].Rec.Bottom - dvLineMatrix[Col, StartLine].Rec.Top) > 0 then - PixelDuration := (LineDuration / (dvLineMatrix[Col, StartLine].Rec.Bottom - dvLineMatrix[Col, StartLine].Rec.Top)) - else - PixelDuration := 0; + with TVpDayViewOpener(FDayView) do + if (dvLineMatrix[Col, StartLine].Rec.Bottom - dvLineMatrix[Col, StartLine].Rec.Top) > 0 then + PixelDuration := (LineDuration / (dvLineMatrix[Col, StartLine].Rec.Bottom - dvLineMatrix[Col, StartLine].Rec.Top)) + else + PixelDuration := 0; { Iterate through events and paint them } for I := 0 to pred(MaxVisibleEvents) do begin @@ -988,12 +945,12 @@ begin Continue; { Build the rectangle in which the event will be painted. } - EventRect := dvLineMatrix[Col, EventSLine].Rec; + EventRect := TVpDayViewOpener(FDayView).dvLineMatrix[Col, EventSLine].Rec; if EventRect.Left < VisibleRect.Left then EventRect.Left := VisibleRect.Left; if EventRect.Top < VisibleRect.Top then EventRect.Top := VisibleRect.Top; - EventRect.Bottom := dvLineMatrix[Col, EventELine].Rec.Bottom; + EventRect.Bottom := TVpDayViewOpener(FDayView).dvLineMatrix[Col, EventELine].Rec.Bottom; if EventRect.Bottom < VisibleRect.Top then EventRect.Bottom := VisibleRect.Bottom; EventWidth := (VisibleRect.Right - VisibleRect.Left) div EventArray[I].WidthDivisor; @@ -1028,20 +985,20 @@ begin if (PixelDuration > 0) and (EventDuration < GetLineDuration(FDayView.Granularity) * EventLineCount) then begin - if (EventSLine >= StartLine) and (EventSTime > dvLineMatrix[0, EventSLine].Time) + if (EventSLine >= StartLine) and (EventSTime > TVpDayViewOpener(FDayView).dvLineMatrix[0, EventSLine].Time) then begin { Get the start offset in TDateTime format } - StartOffset := EventSTime - dvLineMatrix[0, EventSLine].Time; + StartOffset := EventSTime - TVpDayViewOpener(FDayView).dvLineMatrix[0, EventSLine].Time; { determine how many pixels to scooch down before painting the event's color code. } StartPixelOffset := trunc(StartOffset / PixelDuration); end; if (EventELine <= StartLine + RealVisibleLines) and - (EventETime < dvLineMatrix[0, EventELine + 1].Time ) + (EventETime < TVpDayViewOpener(FDayView).dvLineMatrix[0, EventELine + 1].Time) then begin { Get the end offset in TDateTime format } - EndOffset := dvLineMatrix[0, EventELine + 1].Time - EventETime; + EndOffset := TVpDayViewOpener(FDayView).dvLineMatrix[0, EventELine + 1].Time - EventETime; { determine how many pixels to scooch down before painting the } { event's color code. } @@ -1062,7 +1019,9 @@ begin RenderCanvas.Brush.Color := WindowColor; - if (dvInPlaceEditor <> nil) and dvInplaceEditor.Visible then begin + if (TVpDayViewOpener(FDayView).dvInPlaceEditor <> nil) and + TVpDayViewOpener(FDayView).dvInplaceEditor.Visible then + begin if FDayView.ActiveEvent = Event then EventIsEditing := True else @@ -1103,9 +1062,9 @@ begin OldBrush.Assign(Canvas.Brush); OldFont.Assign(Canvas.Font); } - OldPen.Assign(FRenderCanvas.Pen); - OldBrush.Assign(FRenderCanvas.Brush); - OldFont.Assign(FRenderCanvas.Font); + OldPen.Assign(RenderCanvas.Pen); + OldBrush.Assign(RenderCanvas.Brush); + OldFont.Assign(RenderCanvas.Font); if Assigned(FDayView.OnBeforeDrawEvent) and (EventArray[I].Level = 0) then FDayView.OnBeforeDrawEvent(Self, Event, FDayView.ActiveEvent = Event, RenderCanvas, EventRect, IconRect) else if Assigned(FDayView.OnBeforeDrawEvent) then @@ -1230,11 +1189,12 @@ begin RenderCanvas.Pen.Assign(OldPen); RenderCanvas.Font.Assign(OldFont); - dvEventArray[EventCount].Rec := Rect( + TVpDayViewOpener(FDayView).dvEventArray[EventCount].Rec := Rect( EventRect.Left, EventRect.Top, EventRect.Right, EventRect.Bottom + 1 ); - dvEventArray[EventCount].IconRect := IconRect; - dvEventArray[EventCount].Event := Event; + TVpDayViewOpener(FDayView).dvEventArray[EventCount].IconRect := IconRect; + TVpDayViewOpener(FDayView).dvEventArray[EventCount].Event := Event; + Inc(EventCount); end; @@ -1242,32 +1202,37 @@ begin if Assigned(FDayView.ActiveEvent) then OKToDrawEditFrame := not (FDayView.ActiveEvent.AllDayEvent); - if (dvInPlaceEditor <> nil) and dvInplaceEditor.Visible and OKToDrawEditFrame then begin + if (TVpDayViewOpener(FDayView).dvInPlaceEditor <> nil) and + TVpDayViewOpener(FDayView).dvInplaceEditor.Visible and + OKToDrawEditFrame then + begin { paint extra borders around the editor } if Assigned(FDayView.DataStore) then RenderCanvas.Brush.Color := FDayView.DataStore.CategoryColorMap.GetColor(FDayView.ActiveEvent.Category); RenderCanvas.Pen.Color := clWindowFrame; - TPSFillRect(RenderCanvas, Angle, RenderIn, - Rect(dvActiveEventRec.Left, dvActiveEventRec.Top - FDayView.GutterWidth, dvActiveEventRec.Right, dvActiveEventRec.Top) - ); - TPSPolyline(RenderCanvas, Angle, RenderIn, [ - Point(dvActiveEventRec.Left, dvActiveEventRec.Top), - Point(dvActiveEventRec.Left, dvActiveEventRec.Top - FDayView.GutterWidth), - Point(dvActiveEventRec.Right, dvActiveEventRec.Top - FDayView.GutterWidth), - Point(dvActiveEventRec.Right, dvActiveEventRec.Top) - ]); - TPSFillRect(RenderCanvas, Angle, RenderIn, Rect( - dvActiveEventRec.Left, - dvActiveEventRec.Bottom, - dvActiveEventRec.Right, - dvActiveEventRec.Bottom + FDayView.GutterWidth - )); - TPSPolyline(RenderCanvas, Angle, RenderIn, [ - Point(dvActiveEventRec.Left, dvActiveEventRec.Bottom), - Point(dvActiveEventRec.Left, dvActiveEventRec.Bottom + FDayView.GutterWidth), - Point(dvActiveEventRec.Right, dvActiveEventRec.Bottom + FDayView.GutterWidth), - Point(dvActiveEventRec.Right, dvActiveEventRec.Bottom) - ]); + with TVpDayViewOpener(FDayView) do begin + TPSFillRect(RenderCanvas, Angle, RenderIn, + Rect(dvActiveEventRec.Left, dvActiveEventRec.Top - GutterWidth, dvActiveEventRec.Right, dvActiveEventRec.Top) + ); + TPSPolyline(RenderCanvas, Angle, RenderIn, [ + Point(dvActiveEventRec.Left, dvActiveEventRec.Top), + Point(dvActiveEventRec.Left, dvActiveEventRec.Top - FDayView.GutterWidth), + Point(dvActiveEventRec.Right, dvActiveEventRec.Top - FDayView.GutterWidth), + Point(dvActiveEventRec.Right, dvActiveEventRec.Top) + ]); + TPSFillRect(RenderCanvas, Angle, RenderIn, Rect( + dvActiveEventRec.Left, + dvActiveEventRec.Bottom, + dvActiveEventRec.Right, + dvActiveEventRec.Bottom + FDayView.GutterWidth + )); + TPSPolyline(RenderCanvas, Angle, RenderIn, [ + Point(dvActiveEventRec.Left, dvActiveEventRec.Bottom), + Point(dvActiveEventRec.Left, dvActiveEventRec.Bottom + FDayView.GutterWidth), + Point(dvActiveEventRec.Right, dvActiveEventRec.Bottom + FDayView.GutterWidth), + Point(dvActiveEventRec.Right, dvActiveEventRec.Bottom) + ]); + end; end; { Clean Up } @@ -1295,7 +1260,7 @@ var begin if (bmp.Width <> 0) and (bmp.Height <> 0) then begin - FRenderCanvas.CopyRect( // wp: was FDayview.Canvas -- does not look correct... + RenderCanvas.CopyRect( // wp: was FDayview.Canvas -- does not look correct... Rect(AIconRect.Left + 1, AIconRect.Top +1, AIconRect.Left + w + 1, AIconRect.Top + h + 1), bmp.Canvas, Rect(0, 0, bmp.Width, bmp.Height) @@ -1345,7 +1310,7 @@ begin RenderCanvas.Pen.Style := psSolid; RenderCanvas.Pen.Color := RealLineColor; LineRect := Rect(R.Left, R.Top, R.Right, R.Top + RealRowHeight); - Hour := Ord(dvLineMatrix[0, StartLine].Hour); + Hour := Ord(TVpDayViewOpener(FDayView).dvLineMatrix[0, StartLine].Hour); for I := 0 to RealVisibleLines do begin { prevent any extranneous drawing below the last hour } @@ -1390,7 +1355,7 @@ begin Inc(Hour); end else begin { Paint Minute Text} - if dvLineMatrix[0, StartLine + i].Minute = 0 then begin + if TVpDayViewOpener(FDayView).dvLineMatrix[0, StartLine + i].Minute = 0 then begin RenderCanvas.Font.Assign(FDayView.RowHeadAttributes.MinuteFont); TPSTextOut(RenderCanvas, Angle, RenderIn, LineRect.Right - RenderCanvas.TextWidth(MinuteStr) - 7, @@ -1406,7 +1371,7 @@ begin ); end; LastHour := Hour; - Hour := Ord(dvLineMatrix[0, StartLine + i + 1].Hour); + Hour := Ord(TVpDayViewOpener(FDayView).dvLineMatrix[0, StartLine + i + 1].Hour); end; TPSMoveTo(RenderCanvas, Angle, RenderIn, LineRect.Right-6, LineRect.Bottom); @@ -1555,28 +1520,21 @@ var I : Integer; begin EventCount := 0; - for I := 0 to pred(Length(dvEventArray)) do begin - dvEventArray[I].Rec.Left := -1; - dvEventArray[I].Rec.Top := -1; - dvEventArray[I].Rec.Right := -1; - dvEventArray[I].Rec.Bottom := -1; - dvEventArray[I].Event := nil; - end; + with TVpDayViewOpener(FDayView) do + for I := 0 to pred(Length(dvEventArray)) do begin + dvEventArray[I].Rec.Left := -1; + dvEventArray[I].Rec.Top := -1; + dvEventArray[I].Rec.Right := -1; + dvEventArray[I].Rec.Bottom := -1; + dvEventArray[I].Event := nil; + end; end; -procedure TVpDayviewPainter.RenderToCanvas(ARenderIn: TRect; +procedure TVpDayViewPainter.RenderToCanvas(ARenderIn: TRect; AAngle: TVpRotationAngle; AScale: Extended; ARenderDate: TDateTime; AStartLine, AStopLine: Integer; AUseGran: TVpGranularity; ADisplayOnly: Boolean); begin - // Buffer parameters - FRenderIn := ARenderIn; - FAngle := AAngle; - FScale := AScale; - FRenderDate := ARenderDate; - FStartLine := AStartLine; - FStopLine := AStopLine; - FUseGran := AUseGran; - FDisplayOnly := ADisplayOnly; + inherited; // Here begins the original routine... if DisplayOnly then begin diff --git a/components/tvplanit/source/vpweekviewpainter.pas b/components/tvplanit/source/vpweekviewpainter.pas index 8b50fd69d..1d4198d73 100644 --- a/components/tvplanit/source/vpweekviewpainter.pas +++ b/components/tvplanit/source/vpweekviewpainter.pas @@ -6,22 +6,12 @@ interface uses SysUtils, LCLType, LCLIntf, Types, - Classes, Graphics, VpConst, VPBase, VpData, VpWeekView; + Classes, Graphics, VpConst, VPBase, VpData, VpBasePainter, VpWeekView; type - TVpWeekViewPainter = class + TVpWeekViewPainter = class(TVpBasePainter) private FWeekView: TVpWeekView; - // Buffered input parameters - FRenderCanvas: TCanvas; - FAngle: TVpRotationAngle; - FScale: Extended; - FRenderDate: TDateTime; - FRenderIn: TRect; - FStartLine: Integer; - FStopLine: Integer; - FUseGran: TVpGranularity; - FDisplayOnly: Boolean; // local parameters of the old TVpWeekView method HeadRect: TRect; SaveBrushColor: TColor; @@ -51,18 +41,6 @@ type ADEventBackgroundColor: TColor; ADEventBorderColor: TColor; - protected - // Buffered input parameters as properties - property Angle: TVpRotationAngle read FAngle; - property DisplayOnly: Boolean read FDisplayOnly; - property RenderCanvas: TCanvas read FRenderCanvas; - property RenderDate: TDateTime read FRenderDate write FRenderDate; - property RenderIn: TRect read FRenderIn; - property Scale: Extended read FScale; - property StartLine: Integer read FStartLine write FStartLine; - property StopLine: Integer read FStopLine; - property UseGran: TVpGranularity read FUseGran; - protected procedure Clear; function DrawAllDayEvents(ADate: TDateTime; DayRect: TRect; var EAIndex: Integer): Boolean; @@ -75,7 +53,7 @@ type constructor Create(AWeekView: TVpWeekView; ARenderCanvas: TCanvas); procedure RenderToCanvas(ARenderIn: TRect; AAngle: TVpRotationAngle; AScale: Extended; ARenderDate: TDateTime; AStartLine, AStopLine: Integer; - AUseGran: TVpGranularity; ADisplayOnly: Boolean); + AUseGran: TVpGranularity; ADisplayOnly: Boolean); override; end; @@ -90,8 +68,8 @@ type constructor TVpWeekViewPainter.Create(AWeekView: TVpWeekView; ARenderCanvas: TCanvas); begin + inherited Create(ARenderCanvas); FWeekView := AWeekView; - FRenderCanvas := ARenderCanvas; end; procedure TVpWeekViewPainter.Clear; @@ -601,15 +579,7 @@ procedure TVpWeekViewPainter.RenderToCanvas(ARenderIn: TRect; AAngle: TVpRotationAngle; AScale: Extended; ARenderDate: TDateTime; AStartLine, AStopLine: Integer; AUseGran: TVpGranularity; ADisplayOnly: Boolean); begin - // Buffer parameters - FRenderIn := ARenderIn; - FAngle := AAngle; - FScale := AScale; - FRenderDate := ARenderDate; - FStartLine := AStartLine; - FStopLine := AStopLine; - FUseGran := AUseGran; - FDisplayOnly := ADisplayOnly; + inherited; // Here begins the original routine... if DisplayOnly then begin