Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Report Preview Hangs
Message
From
09/01/2008 07:58:10
 
 
To
All
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Title:
Report Preview Hangs
Environment versions
Visual FoxPro:
VFP 9
OS:
Windows XP SP2
Network:
Windows 2003 Server
Database:
Visual FoxPro
Miscellaneous
Thread ID:
01280494
Message ID:
01280494
Views:
59
I have been using the following code by Trevor Hancock to disable the Print button when previewing a report:
LPARAMETERS cReportName

*-----------------------------------
* AUTHOR: Trevor Hancock
* CREATED: 02/24/05 02:47:08 PM
* ABSTRACT:
*   Shows how to disable printing from
*   PREVIEW when you use object-assisted
*   reporting in VFP9.
*
*   Also includes a workaround for problem
*   where the PREVIEW toolbar does not
*   recognize the TextOnToolbar or
*   PrintFromPreview settings between
*   toolbar displays during same preview.
*-----------------------------------

*-- Defines whether to alllow for
*-- printing during preview. Used to set
*-- the "AllowPrintfromPreview" property
*-- of the object-assisted preview container
*-- later in this code.
cSetReportBehavior = SET("ReportBehavior")
SET REPORTBEHAVIOR 90

#DEFINE PrintFromPreview .F.

LOCAL loPreviewContainer AS FORM, ;
	loReportListener AS REPORTLISTENER, ;
	loExHandler AS ExtensionHandler OF SYS(16)

*-- Get a preview container from the
*-- .APP registered to handle object-assisted
*-- report previewing.
loPreviewContainer = NULL
DO (_REPORTPREVIEW) WITH loPreviewContainer

*-- Create a PREVIEW listener
loReportListener = NEWOBJECT('ReportListener')
loReportListener.LISTENERTYPE = 1 &&Preview

*-- Link the Listener and preview container
loReportListener.PREVIEWCONTAINER = loPreviewContainer

*-- Changing this property prevents printing from the Preview toolbar
*-- and from right-clicking on the preview container, and then clicking "print".
*-- This property is not in the VFP9 documentation at this point.
loPreviewContainer.AllowPrintfromPreview = PrintFromPreview

*-- Controls appearance of text on some of the
*-- Preview toolbar buttons. .F. is the default.
*-- Included here just to show that it is an available option.
loPreviewContainer.TextOnToolbar = .F.
 
*-- Create an extension handler and hook it to the
*-- preview container. This will let you manipulate
*-- properties of the container and its Preview toolbar
loExHandler = NEWOBJECT('ExtensionHandler')
loPreviewContainer.SetExtensionHandler( loExHandler )

REPORT FORM (cReportName) OBJECT loReportListener

RELEASE loPreviewContainer, loReportListener, loExHandler



*-------------------------
*-------------------------
DEFINE CLASS ExtensionHandler AS CUSTOM
	*-- Ref to the Preview Container's Preview Form
	PreviewForm  = NULL

	*-- Here you implement (hook into) the PreviewForm_Assign
	*-- event of the preview container's parent proxy
	PROCEDURE PreviewForm_Assign( loRef )
		*-- Perform default behavior: assign obj ref.
		THIS.PreviewForm = loRef

		*-- Grab the obj ref to the preview form and bind to its
		*-- ShowToolbar() method. This lets the
		*-- STB_Handler() method of this extension handler
		*-- to run code whenever the Preview toolbar is shown
		*-- by the PreviewForm.ShowToolbar() method.
		IF !ISNULL( loRef )
			BINDEVENT(THIS.PreviewForm, ;
				'ShowToolbar', THIS, 'STB_Handler')
		ENDIF
	ENDPROC

	PROCEDURE STB_Handler(lEnabled)
		*-- Here you work around the setting
		*-- persistence problem in the Preview toolbar. 
		*-- The Preview toolbar class (frxpreviewtoolbar)
		*-- already has code that you can use to enforce
		*-- setting's persistence; it is just not called. Here,
		*-- you call it.
		WITH THIS.PreviewForm.TOOLBAR
			.REFRESH()
			*-- When you call frxpreviewtoolbar::REFRESH(), the
			*-- toolbar caption is set to its Preview form,
			*-- which differs from typical behavior. You must revert that
			*-- to be consistent. If you did not do this,
			*-- you would see " - Page 2" appended to the toolbar
			*-- caption if you skipped pages.
			.CAPTION = THIS.PreviewForm.formCaption
		ENDWITH
	ENDPROC


	*-- A preview container requires these methods
	*-- to be implemented in an associated preview extension handler.
	*-- They are not used in this example, but still must be here.
	PROCEDURE AddBarsToMenu( cPopup, iNextBar )
		PROCEDURE SHOW( iStyle )
		ENDPROC
		PROCEDURE HandledKeyPress( nKeyCode, nShiftAltCtrl )
			RETURN .F.
		ENDPROC
		PROCEDURE PAINT
		ENDPROC
		PROCEDURE RELEASE
			RETURN .T.
	ENDPROC 
ENDDEFINE
*
*
*----------- END CODE
This works fine on my development machine and has worked fine on client computers until recently. It now seems to hang up on the
REPORT FORM (cReportName) OBJECT loReportListener
part of the code and the only way to exit is through task manager.

Any ideas what I am missing?

Thanks in advance,
Next
Reply
Map
View

Click here to load this message in the networking platform