TvPlanIt: Avoid windows-like messages in printing routines (fixes crashes in cocoa related to PrintPreview).

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8888 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2023-07-21 20:18:22 +00:00
parent d5965cb872
commit d9d497757b
6 changed files with 111 additions and 62 deletions

View File

@@ -84,7 +84,7 @@ type
end;
PVpPageInfo = ^TVpPageInfo;
TVpPrintPreview = class(TVpCustomControl)
TVpPrintPreview = class(TVpCustomControl, IVpWatcher)
private
FBorderStyle: TBorderStyle;
FControlLink: TVpControlLink;
@@ -148,13 +148,15 @@ type
procedure SetScrollBars;
procedure SetZoomFactor(const v: TVpPPZoomFactor);
// procedure VpPrintFormatChanged (var Msg : {$IFNDEF LCL}TMessage{$ELSE}TLMessage{$ENDIF}; message Vp_PrintFormatChanged;
{$IFDEF DELPHI}
procedure VpPrintFormatChanged (var Msg: TMessage); message Vp_PrintFormatChanged;
procedure WMEraseBackground(var Msg: TWMERASEBKGND); message WM_ERASEBKGND;
procedure WMHScroll(var Msg: TWMSCROLL); message WM_HSCROLL;
procedure WMVScroll(var Msg: TWMSCROLL); message WM_VSCROLL;
procedure WMRButtonDown(var Msg: TWMRButtonDown); message WM_RBUTTONDOWN;
{$ELSE}
procedure VpDatastoreChanged;
procedure VpPrintFormatChanged;
procedure WMEraseBackground(var Msg: TLMERASEBKGND); message LM_ERASEBKGND;
procedure WMHScroll(var Msg: TLMSCROLL); message LM_HSCROLL;
procedure WMVScroll(var Msg: TLMSCROLL); message LM_VSCROLL;
@@ -275,7 +277,7 @@ end;
destructor TVpPrintPreview.Destroy;
begin
if (HandleAllocated) and Assigned (FControlLink) then
FControlLink.Printer.DeregisterWatcher(Handle);
FControlLink.Printer.DeregisterWatcher({$IFDEF LCL}Self{$ELSE}Handle{$ENDIF});
ClearPageData;
@@ -359,12 +361,12 @@ end;
procedure TVpPrintPreview.CreateWnd;
begin
if HandleAllocated and Assigned(FControlLink) then
FControlLink.Printer.DeRegisterWatcher(Handle);
FControlLink.Printer.DeRegisterWatcher({$IFDEF LCL}Self{$ELSE}Handle{$ENDIF});
inherited CreateWnd;
if Assigned(FControlLink) then
FControlLink.Printer.RegisterWatcher(Handle);
FControlLink.Printer.RegisterWatcher({$IFDEF LCL}Self{$ELSE}Handle{$ENDIF});
end;
procedure TVpPrintPreview.DoScroll(var Msg: {$IFNDEF LCL}TWMSCROLL{$ELSE}TLMScroll{$ENDIF};
@@ -980,10 +982,10 @@ procedure TVpPrintPreview.SetControlLink(const v: TVpControlLink);
begin
if FControlLink <> v then begin
if Assigned (FControlLink) then
FControlLink.Printer.DeregisterWatcher(Handle);
FControlLink.Printer.DeregisterWatcher({$IFDEF LCL}Self{$ELSE}Handle{$ENDIF});
FControlLink := v;
if Assigned(FControlLink) then
FControlLink.Printer.RegisterWatcher(Handle);
FControlLink.Printer.RegisterWatcher({$IFDEF LCL}Self{$ELSE}Handle{$ENDIF});
ClearPageData;
GeneratePageImage;
Invalidate;
@@ -1123,12 +1125,15 @@ begin
end;
end;
{$IFNDEF LCL}
procedure TVpPrintPreview.VpPrintFormatChanged(var Msg: {$IFNDEF LCL}TMessage{$ELSE}TLMessage{$ENDIF});
procedure TVpPrintPreview.VpDatastoreChanged;
begin
//
end;
procedure TVpPrintPreview.VpPrintFormatChanged({$IFNDEF LCL}var Msg: TMessage{$ENDIF});
begin
ForceUpdate;
end;
{$ENDIF}
procedure TVpPrintPreview.WMEraseBackground(var Msg: {$IFDEF DELPHI}TWMERASEBKGND){$ELSE}TLMERASEBKGND){$ENDIF};
begin