From 3771d2c3bbb06c783b2e6b70d71896bdb4af4172 Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Sun, 31 Jul 2016 10:54:39 +0000 Subject: [PATCH] tvplanit: Fix print formats crashing if view is not contained in current form. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5055 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/tvplanit/source/vpprtfmt.pas | 30 ++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/components/tvplanit/source/vpprtfmt.pas b/components/tvplanit/source/vpprtfmt.pas index 5ed312850..6df6d8b80 100644 --- a/components/tvplanit/source/vpprtfmt.pas +++ b/components/tvplanit/source/vpprtfmt.pas @@ -359,7 +359,11 @@ type FUseFormComponents: Boolean; { Work copies of all the components - used if the components cannot be located when printing } + {$IFDEF LCL} + FParent: TForm; + {$ELSE} FParentHandle: THandle; + {$ENDIF} FDayView: TComponent; FWeekView: TComponent; FMonthView: TComponent; @@ -450,7 +454,8 @@ uses {$IFDEF LCL} DateUtils, {$ENDIF} - VpConst, VpMisc, VpBaseDS, VpPrtFmtCBox; + VpConst, VpMisc, VpBaseDS, VpPrtFmtCBox, + VpDayView, VpWeekView, VpMonthView, VpTaskList, VpContactGrid, VpCalendar; function XMLizeString(const s: string): string; var @@ -1360,12 +1365,27 @@ procedure TVpPrinter.CreateWorkControls; begin {$IFNDEF LCL} FParentHandle := AllocateHWnd(nil); + FParentHandle := Application.MainForm.Handle; FDayView := TVpDayView.CreateParented(FParentHandle); FWeekView := TVpWeekView.CreateParented(FParentHandle); FMonthView := TVpMonthView.CreateParented(FParentHandle); FCalendar := TVpCalendar.CreateParented(FParentHandle); FContactGrid := TVpContactGrid.CreateParented(FParentHandle); FTaskList := TVpTaskList.CreateParented(FParentHandle); +{$ELSE} + FParent := TForm.Create(nil); + FDayView := TVpDayView.Create(FParent); + TVpDayView(FDayView).Parent := FParent; + FWeekView := TVpWeekView.Create(FParent); + TVpWeekView(FWeekView).Parent := FParent; + FMonthView := TVpMonthView.Create(FParent); + TVpMonthView(FMonthView).Parent := FParent; + FCalendar := TVpCalendar.Create(FParent); + TVpCalendar(FCalendar).Parent := FParent; + FContactGrid := TVpContactGrid.Create(FParent); + TVpContactGrid(FContactGrid).Parent := FParent; + FTaskList := TVpTaskList.Create(FParent); + TVpTaskList(FTaskList).Parent := FParent; {$ENDIF} end; {=====} @@ -1380,6 +1400,14 @@ begin FCalendar.Free; FContactGrid.Free; FTaskList.Free; +{$ELSE} + FDayView.Free; + FWeekView.Free; + FMonthView.Free; + FCalendar.Free; + FContactGrid.Free; + FTaskList.Free; + FParent.Free; {$ENDIF} end; {=====}