Verhindern des Druckens aus einer Berichtsvorschau in Visual FoxPro 9.0
In diesem Artikel wird gezeigt, wie Sie die Option zum Drucken eines Berichts deaktivieren, während er in der Vorschau angezeigt wird, indem Sie Object-Assisted Reporting in Visual FoxPro 9.0 verwenden.
Ursprüngliche Produktversion: Visual FoxPro
Ursprüngliche KB-Nummer: 895279
Zusammenfassung
Microsoft Visual FoxPro 9.0 führt Object-Assisted Reporting-Architektur ein. Mit diesem neuen Design können Sie direkt über Code mit Visual FoxPro 9.0-Berichterstellungstools wie den Berichts-Designer und Berichtsvorschauen zusammenarbeiten. Daher ist es einfacher, die Möglichkeit zum Drucken aus einer Berichtsvorschau in Visual FoxPro 9.0 zu deaktivieren als in früheren Versionen von Visual FoxPro. In diesem Artikel wird beschrieben, wie Sie Code schreiben, um direkt mit Object-Assisted Berichtsvorschauen zu interagieren und zu konfigurieren.
Weitere Informationen
Wenn ein Object-Assisted Bericht in Visual FoxPro 9.0 in der Vorschau angezeigt wird, kann der Benutzer den Bericht standardmäßig mithilfe einer der folgenden Methoden aus dem Berichtsvorschaufenster drucken:
- Klicken Sie auf der Symbolleiste Berichtsvorschau auf die Schaltfläche Drucken .
- Klicken Sie mit der rechten Maustaste in das Fenster Berichtsvorschau, und klicken Sie dann auf Drucken.
Sie können diese Option deaktivieren. In früheren Versionen von Visual FoxPro musste die Visual FoxPro-Ressourcendatei (FoxUser.dbf) geändert werden.
In Visual FoxPro 9.0 können Sie die Datei FoxUser.dbf weiterhin ändern, um das Drucken im Berichtsvorschaufenster zu deaktivieren. Mit der Einführung von Object-Assisted Reporting ist nun jedoch ein alternativer Ansatz verfügbar. Standardmäßig ist Object-Assisted Reporting in Visual FoxPro 9.0 nicht aktiviert. Um sie zu aktivieren, müssen Sie die REPORTBEHAVIOR
Einstellung ändern. Verwenden Sie dazu eine der folgenden Methoden:
Methode 1, Ändern der Verhaltenseinstellung der Berichts-Engine über die Visual FoxPro-IDE:
- Klicken Sie im Menü Extras auf Optionen.
- Klicken Sie im Dialogfeld Optionen auf die Registerkarte Berichte , und wählen Sie dann 90 (Objektunterstützt) in der Liste Berichts-Engine-Verhalten aus.
- (Optional) Wenn diese Einstellung zwischen Visual FoxPro 9.0-Sitzungen beibehalten werden soll, klicken Sie im Dialogfeld Optionen auf Als Standard festlegen.
Methode 2: Führen Sie den folgenden Befehl im Code aus, um Object-Assisted Reporting zu aktivieren:
SET REPORTBEHAVIOR 90
.
Codebeispiel
Wenn Sie das folgende Codebeispiel ausführen, wird die Beispielberichtsdatei mit dem Namen Colors.frx in der Vorschau angezeigt. Im Codebeispiel wird eine Vorschau des Berichts angezeigt und eine Kombination aus Eigenschafteneinstellungen im Vorschaucontainer und Vorschauerweiterungshandler verwendet, um das Drucken aus dem Berichtsvorschaufenster vollständig zu deaktivieren.
In diesem Codebeispiel wird auch ein Problem in der Berichtsvorschau von Visual FoxPro 9.0 Object-Assisted behoben, bei dem die Berichtsvorschausymbolleiste die Anzeigeeinstellungen zwischen den Darstellungen in derselben Berichtsvorschausitzung nicht ordnungsgemäß beibehalten.
Dieses Codebeispiel gilt sowohl für die Visual FoxPro 9.0-Entwicklungsumgebung als auch für ausführbare Dateien, die mit Visual FoxPro 9.0 erstellt werden, solange Sie Object-Assisted Reporting verwenden.
Führen Sie die folgenden Schritte aus, um dieses Codebeispiel zu verwenden:
Speichern Sie den folgenden Code in einer neuen Programmdatei in Visual FoxPro 9.0, und führen Sie den Code dann aus.
*----------- START CODE * *----------------------------------- * 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. #DEFINE PrintFromPreview .T. 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 ; HOME() + 'Samples\Solution\Reports\colors.frx' ; 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
Eine Vorschau des Berichts Colors.frx wird geöffnet.
Hinweis
Sie können im Berichtsvorschaufenster drucken, indem Sie mit der rechten Maustaste auf die Vorschau klicken oder auf der Symbolleiste Berichtsvorschau auf Drucken klicken.
Schließen Sie die Vorschau, und ändern Sie dann den Code im Programm-Editor.
Ändern Sie die #DEFINE-Anweisung am Anfang des Codes in den Wert .F. Suchen Sie dazu den folgenden Code.
#DEFINE PrintFromPreview .T.
Ersetzen Sie sie durch den folgenden Code:
#DEFINE PrintFromPreview .F.
Speichern Sie den Code, und führen Sie ihn dann erneut aus.
Hinweis
Jetzt können Sie nicht mehr über das Berichtsvorschaufenster drucken, indem Sie mit der rechten Maustaste auf die Vorschau klicken oder auf der Berichtsvorschausymbolleiste auf Drucken klicken.